Class: Zlib::GzipWriter
Constant Summary
Constants inherited
from GzipFile
Zlib::GzipFile::GZFILE_FLAG_FOOTER_FINISHED, Zlib::GzipFile::GZFILE_FLAG_HEADER_FINISHED, Zlib::GzipFile::GZFILE_FLAG_SYNC, Zlib::GzipFile::GZFILE_READ_SIZE, Zlib::GzipFile::GZ_EXTRAFLAG_FAST, Zlib::GzipFile::GZ_EXTRAFLAG_SLOW, Zlib::GzipFile::GZ_FLAG_COMMENT, Zlib::GzipFile::GZ_FLAG_ENCRYPT, Zlib::GzipFile::GZ_FLAG_EXTRA, Zlib::GzipFile::GZ_FLAG_MULTIPART, Zlib::GzipFile::GZ_FLAG_ORIG_NAME, Zlib::GzipFile::GZ_FLAG_UNKNOWN_MASK, Zlib::GzipFile::GZ_MAGIC1, Zlib::GzipFile::GZ_MAGIC2, Zlib::GzipFile::GZ_METHOD_DEFLATE, Zlib::GzipFile::OS_CODE
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from GzipFile
#GZFILE_IS_FINISHED, #close, #closed?, #comment, #crc, #finish, #gzfile_close, #gzfile_ensure_close, gzfile_s_open, #level, #mtime, #orig_name, #os_code, #sync, #sync=, #to_io, wrap
Constructor Details
#initialize(io, level = nil, strategy = nil) ⇒ GzipWriter
Returns a new instance of GzipWriter.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/pr/zlib/gzipwriter.rb', line 50
def initialize(io, level = nil, strategy = nil)
level = Z_DEFAULT_COMPRESSION if level.nil?
strategy = Z_DEFAULT_STRATEGY if strategy.nil?
gzfile_new(DeflateFuncs, :gzfile_writer_end)
@gz.level = level
err = deflateInit2(
@gz.z.stream,
@gz.level,
Z_DEFLATED,
-MAX_WBITS,
DEF_MEM_LEVEL,
strategy
)
if err != Z_OK
raise_zlib_error(err, @gz.stream.msg)
end
@gz.io = io
@gz.z.ZSTREAM_READY()
end
|
Class Method Details
.open(filename, level = Z_DEFAULT_COMPRESSION, strategy = Z_DEFAULT_STRATEGY, &blk) ⇒ Object
Instance Method Details
#<<(str) ⇒ Object
103
104
105
|
# File 'lib/pr/zlib/gzipwriter.rb', line 103
def <<(str)
@gz.io << str
end
|
29
30
31
32
33
34
35
36
37
|
# File 'lib/pr/zlib/gzipwriter.rb', line 29
def (str)
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).nonzero?
raise GzipFile::Error, 'header is already written'
end
@gz. = str.dup
end
|
#flush(v_flush = Z_SYNC_FLUSH) ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/pr/zlib/gzipwriter.rb', line 74
def flush(v_flush = Z_SYNC_FLUSH)
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
if v_flush != Z_NO_FLUSH
@gz.z.zstream_run('', 0, v_flush)
end
gzfile_write_raw()
if defined?(@gz.io.flush)
@gz.io.flush()
end
self
end
|
#gzfile_writer_end ⇒ Object
157
158
159
160
161
162
163
164
165
|
# File 'lib/pr/zlib/gzipwriter.rb', line 157
def gzfile_writer_end
return if @gz.z.ZSTREAM_IS_CLOSING()
@gz.z.flags |= ZSTREAM_FLAG_CLOSING
begin
gzfile_writer_end_run()
ensure
@gz.z.zstream_end()
end
end
|
#gzfile_writer_end_run ⇒ Object
146
147
148
149
150
151
152
153
154
155
|
# File 'lib/pr/zlib/gzipwriter.rb', line 146
def gzfile_writer_end_run
if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).zero?
()
end
@gz.z.zstream_run('', 0, Z_FINISH)
()
gzfile_write_raw()
nil
end
|
#mtime=(mtime) ⇒ Object
8
9
10
11
12
13
14
15
16
|
# File 'lib/pr/zlib/gzipwriter.rb', line 8
def mtime=(mtime)
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).nonzero?
raise GzipFile::Error, 'header is already written'
end
@gz.mtime = mtime.to_i
end
|
#orig_name=(str) ⇒ Object
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/pr/zlib/gzipwriter.rb', line 18
def orig_name=(str)
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
if (@gz.z.flags & GZFILE_FLAG_HEADER_FINISHED).nonzero?
raise GzipFile::Error, 'header is already written'
end
ap = str[0.chr]
@gz.orig_name = ap ? str[0, ap] : str.dup
end
|
#pos ⇒ Object
Also known as:
tell
39
40
41
42
|
# File 'lib/pr/zlib/gzipwriter.rb', line 39
def pos
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
@gz.z.stream.total_in
end
|
#print(*arg) ⇒ Object
111
112
113
|
# File 'lib/pr/zlib/gzipwriter.rb', line 111
def print(*arg)
@gz.io.print(*arg)
end
|
#printf(*arg) ⇒ Object
107
108
109
|
# File 'lib/pr/zlib/gzipwriter.rb', line 107
def printf(*arg)
@gz.io.printf(*arg)
end
|
#putc(ch) ⇒ Object
97
98
99
100
101
|
# File 'lib/pr/zlib/gzipwriter.rb', line 97
def putc(ch)
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
gzfile_write(ch.chr, 1)
ch
end
|
#puts(str) ⇒ Object
115
116
117
|
# File 'lib/pr/zlib/gzipwriter.rb', line 115
def puts(str)
@gz.io.puts(str)
end
|
#write(str) ⇒ Object
90
91
92
93
94
95
|
# File 'lib/pr/zlib/gzipwriter.rb', line 90
def write(str)
raise GzipFile::Error, 'closed gzip stream' unless @gz.z.ZSTREAM_IS_READY()
str = str.to_s
gzfile_write(str, str.length)
str.length
end
|