Module: Krypt::BaseCodec

Defined in:
lib/krypt/codec/base_codec.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#generic_read(len, read_len) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/krypt/codec/base_codec.rb', line 3

def generic_read(len, read_len)
  data = @io.read(read_len)
  data = yield data if data
  if @buf
    data = data || ""
    data = @buf << data
  end
  return data unless len && data
  dlen = data.size
  remainder = dlen - len
  update_buffer(data, dlen, remainder)
  data
end

#generic_write(data, blk_size) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/krypt/codec/base_codec.rb', line 17

def generic_write(data, blk_size)
  return 0 unless data
  @write = true
  data = @buf ? @buf << data : data.dup
  dlen = data.size
  remainder = dlen % blk_size
  update_buffer(data, dlen, remainder)
  @io.write(yield data) if data.size > 0
end

#update_buffer(data, dlen, remainder) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/krypt/codec/base_codec.rb', line 27

def update_buffer(data, dlen, remainder)
  if remainder > 0
    @buf = data.slice!(dlen - remainder, remainder)
  else
    @buf = nil
  end
end