File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -76,15 +76,18 @@ def each_line(line)
7676 end
7777
7878 class JSONParser < Parser
79+ BYTES_TO_READ = 8192
80+
7981 def call ( io )
8082 parser = JSON ::ResumableParser . new ( { } )
81- buffer_size = 8192
82-
83- while ( chunk = io . read ( buffer_size ) )
84- parser << chunk
85- while parser . parse
86- @on_message . call ( parser . value )
83+ begin
84+ while ( chunk = io . readpartial ( BYTES_TO_READ ) )
85+ parser << chunk
86+ while parser . parse
87+ @on_message . call ( parser . value )
88+ end
8789 end
90+ rescue EOFError
8891 end
8992 end
9093 end
Original file line number Diff line number Diff line change @@ -92,13 +92,16 @@ def parser_type
9292
9393 def parse_io ( io , &block )
9494 parser = JSON ::ResumableParser . new ( { } )
95- while ( chunk = io . read ( @stream_buffer_size ) )
96- parser << chunk
95+ begin
96+ while ( chunk = io . readpartial ( @stream_buffer_size ) )
97+ parser << chunk
9798
98- while parser . parse
99- record = parser . value
100- block . call ( parse_time ( record ) , record )
99+ while parser . parse
100+ record = parser . value
101+ block . call ( parse_time ( record ) , record )
102+ end
101103 end
104+ rescue EOFError
102105 end
103106 end
104107 end
You can’t perform that action at this time.
0 commit comments