class Archive::Zip::Codec::NullEncryption::Encrypt
Archive::Zip::Codec::NullEncryption::Encrypt
is a writable, IO-like object which writes all data written to it directly to a delegate IO object. A close method is also provided which can optionally closed the delegate object.
Public Class Methods
Creates a new instance of this class using io as a data sink. io must be writable and must provide a write method as IO does or errors will be raised when performing write operations.
The flush_size attribute is set to 0
by default under the assumption that io is already buffered.
# File lib/archive/zip/codec/null_encryption.rb, line 39 def initialize(io) @io = io # Keep track of the total number of bytes written. @total_bytes_in = 0 # Assume that the delegate IO object is already buffered. self.flush_size = 0 end
Creates a new instance of this class with the given argument using new and then passes the instance to the given block. The close
method is guaranteed to be called after the block completes.
Equivalent to new if no block is given.
# File lib/archive/zip/codec/null_encryption.rb, line 22 def self.open(io) encrypt_io = new(io) return encrypt_io unless block_given? begin yield(encrypt_io) ensure encrypt_io.close unless encrypt_io.closed? end end
Public Instance Methods
Closes this object so that further write operations will fail. If close_delegate is true
, the delegate object used as a data sink will also be closed using its close method.
# File lib/archive/zip/codec/null_encryption.rb, line 52 def close(close_delegate = true) super() @io.close if close_delegate end
Private Instance Methods
Allows resetting this object and the delegate object back to the beginning of the stream or reporting the current position in the stream.
Raises Errno::EINVAL unless offset is 0
and whence is either IO::SEEK_SET or IO::SEEK_CUR. Raises Errno::EINVAL if whence is IO::SEEK_SEK and the delegate object does not respond to the rewind method.
# File lib/archive/zip/codec/null_encryption.rb, line 66 def unbuffered_seek(offset, whence = IO::SEEK_SET) unless offset == 0 && ((whence == IO::SEEK_SET && @io.respond_to?(:rewind)) || whence == IO::SEEK_CUR) then raise Errno::EINVAL end case whence when IO::SEEK_SET @io.rewind @total_bytes_in = 0 when IO::SEEK_CUR @total_bytes_in end end
Writes string to the delegate IO object and returns the result.
# File lib/archive/zip/codec/null_encryption.rb, line 83 def unbuffered_write(string) bytes_written = @io.write(string) @total_bytes_in += bytes_written bytes_written end