Class: StreamReader
- Inherits:
-
javajava::iojava::io::Reader
- Object
- javajava::iojava::io::Reader
- StreamReader
- Defined in:
- lib/com/microsoft/json-parser.rb
Overview
class JsonParser
Instance Method Summary collapse
- #close ⇒ Object
- #drop_stream(until_offset) ⇒ Object
- #find(substring, offset) ⇒ Object
- #get_cached_stream_index ⇒ Object
- #get_cached_stream_length ⇒ Object
- #get_stream_buffer(start_index, end_index) ⇒ Object
-
#initialize(logger, reader) ⇒ StreamReader
constructor
A new instance of StreamReader.
- #markSupported ⇒ Object
-
#read(buf, offset, len) ⇒ Object
offset refers to the offset in the output bufferdocs.oracle.com/javase/7/docs/api/java/io/Reader.html#read(char[],%20int,%20int).
- #reset_cached_stream_index(new_offset) ⇒ Object
Constructor Details
#initialize(logger, reader) ⇒ StreamReader
Returns a new instance of StreamReader.
92 93 94 95 96 97 98 99 100 101 |
# File 'lib/com/microsoft/json-parser.rb', line 92 def initialize(logger, reader) super() @logger = logger @reader = reader @stream_buffer = "" @is_full_stream_read = false @index = 0 @stream_buffer_length = 0 end |
Instance Method Details
#close ⇒ Object
107 108 |
# File 'lib/com/microsoft/json-parser.rb', line 107 def close end |
#drop_stream(until_offset) ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/com/microsoft/json-parser.rb', line 126 def drop_stream(until_offset) @logger.debug("StreamReader::drop_stream until_offset:#{until_offset} index: #{@index}") if @index < until_offset return end @stream_buffer = @stream_buffer[until_offset..-1] @index = @index - until_offset @stream_buffer_length = @stream_buffer_length - until_offset end |
#find(substring, offset) ⇒ Object
122 123 124 |
# File 'lib/com/microsoft/json-parser.rb', line 122 def find(substring, offset) return @stream_buffer.index(substring, offset) end |
#get_cached_stream_index ⇒ Object
114 115 116 |
# File 'lib/com/microsoft/json-parser.rb', line 114 def get_cached_stream_index return @index end |
#get_cached_stream_length ⇒ Object
110 111 112 |
# File 'lib/com/microsoft/json-parser.rb', line 110 def get_cached_stream_length return @stream_buffer_length end |
#get_stream_buffer(start_index, end_index) ⇒ Object
118 119 120 |
# File 'lib/com/microsoft/json-parser.rb', line 118 def get_stream_buffer(start_index, end_index) return @stream_buffer[start_index..end_index] end |
#markSupported ⇒ Object
103 104 105 |
# File 'lib/com/microsoft/json-parser.rb', line 103 def markSupported return false end |
#read(buf, offset, len) ⇒ Object
offset refers to the offset in the output bufferdocs.oracle.com/javase/7/docs/api/java/io/Reader.html#read(char[],%20int,%20int)
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/com/microsoft/json-parser.rb', line 145 def read(buf, offset, len) @logger.debug("StreamReader::read #{offset} #{len} | stream index: #{@index} stream length: #{@stream_buffer_length}") are_all_bytes_available = true if @index + len - offset > @stream_buffer_length are_all_bytes_available = fill_stream_buffer(@index + len - offset - @stream_buffer_length) end if (@stream_buffer_length - @index) < len len = @stream_buffer_length - @index @logger.debug("StreamReader::read #{offset} Actual length: #{len}") end if len > 0 #TODO: optimize this jv_string = @stream_buffer[@index..@index+len-1].to_java jv_bytes_array = jv_string.toCharArray() java::lang::System.arraycopy(jv_bytes_array, 0, buf, offset, len) @index = @index + len end if !are_all_bytes_available && len == 0 @logger.debug("StreamReader::read end of stream") return -1 else return len end rescue java::lang::IndexOutOfBoundsException => e @logger.debug("StreamReader::read IndexOutOfBoundsException") raise e rescue java::lang::ArrayStoreException => e @logger.debug("StreamReader::read ArrayStoreException") raise e rescue java::lang::NullPointerException => e @logger.debug("StreamReader::read NullPointerException") raise e end |
#reset_cached_stream_index(new_offset) ⇒ Object
136 137 138 139 140 141 142 |
# File 'lib/com/microsoft/json-parser.rb', line 136 def reset_cached_stream_index(new_offset) @logger.debug("StreamReader::reset_cached_stream_index new_offset:#{new_offset} index: #{@index}") if new_offset < 0 return end @index = new_offset end |