class ChunkWriterIO

Constants

MAX_CHUNK_SIZE

Writer for chunked data.

Public Class Methods

new() click to toggle source
Calls superclass method
   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
 8 def initialize
 9   @output_buffer = []
10   @output_size = 0
11   super
12 end

Public Instance Methods

buffer_result(zero_chunk = false) click to toggle source
   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
55 def buffer_result(zero_chunk = false)
56   result = ''
57 
58   if !@output_buffer.empty?
59     result << [@output_size].pack('s>*')
60     result.concat(@output_buffer.join)
61   end
62 
63   result << "\x00\x00" if zero_chunk
64 
65   result
66 end
clear_buffer!() click to toggle source
   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
68 def clear_buffer!
69   @output_buffer.clear
70   @output_size = 0
71 end
close(zero_chunk = false) click to toggle source

Close the stream.

Calls superclass method
   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
44 def close(zero_chunk = false)
45   flush(zero_chunk)
46   super
47 end
flush(zero_chunk = false) click to toggle source
Calls superclass method
   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
36 def flush(zero_chunk = false)
37   write_without_chunking(buffer_result(zero_chunk))
38   clear_buffer!
39 
40   super()
41 end
write(string)
Also aliased as: write_without_chunking
Alias for: write_with_chunking
write_buffer!(string, size) click to toggle source

private

   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
50 def write_buffer!(string, size)
51   @output_buffer << string
52   @output_size = size
53 end
write_with_chunking(string) click to toggle source

Write some bytes, splitting into chunks if necessary.

   # File lib/neo4j/core/cypher_session/adaptors/bolt/chunk_writer_io.rb
15 def write_with_chunking(string)
16   until string.empty?
17     future_size = @output_size + string.size
18     if future_size >= MAX_CHUNK_SIZE
19       last = MAX_CHUNK_SIZE - @output_size
20       write_buffer!(string[0, last], MAX_CHUNK_SIZE)
21       string = string[last..-1]
22 
23       write_without_chunking(buffer_result)
24       clear_buffer!
25     else
26       write_buffer!(string, future_size)
27 
28       string = ''
29     end
30   end
31 end
Also aliased as: write
write_without_chunking(string)
Alias for: write