Class: Connect::Envelope
- Inherits:
-
Object
- Object
- Connect::Envelope
- Defined in:
- lib/connect/envelope.rb
Constant Summary collapse
- COMPRESSED_FLAG =
0b00000001
Class Method Summary collapse
- .pack(source, compression: nil, compress_min_bytes: nil) ⇒ Object
- .unpack(source, compression: nil) ⇒ Object
Class Method Details
.pack(source, compression: nil, compress_min_bytes: nil) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/connect/envelope.rb', line 8 def pack(source, compression: nil, compress_min_bytes: nil) if compress_min_bytes.nil? || source.bytesize < compress_min_bytes || compression.nil? [0, source.bytesize, source].pack("CNa*") else compressed = compression.compress(source) [COMPRESSED_FLAG, compressed.bytesize, compressed].pack("CNa*") end end |
.unpack(source, compression: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/connect/envelope.rb', line 17 def unpack(source, compression: nil) flags, size = source.read(5).unpack("CN") if flags & COMPRESSED_FLAG == 0 [flags, source.read(size)] else [flags, compression.decompress(source.read(size))] end end |