Module: Proj::NetworkApiCallbacks
- Included in:
- NetworkApiImpl
- Defined in:
- lib/proj/network_api.rb
Instance Method Summary collapse
- #close_callback(context, handle, user_data) ⇒ Object
- #header_value_callback(context, handle, header_name_ptr, user_data) ⇒ Object
- #install_callbacks(context) ⇒ Object
- #open_callback(context, url, offset, size_to_read, buffer, out_size_read, error_string_max_size, out_error_string, user_data) ⇒ Object
- #read_range_callback(context, handle, offset, size_to_read, buffer, error_string_max_size, out_error_string, user_data) ⇒ Object
Instance Method Details
#close_callback(context, handle, user_data) ⇒ Object
29 30 31 |
# File 'lib/proj/network_api.rb', line 29 def close_callback(context, handle, user_data) self.close end |
#header_value_callback(context, handle, header_name_ptr, user_data) ⇒ Object
33 34 35 36 37 |
# File 'lib/proj/network_api.rb', line 33 def header_value_callback(context, handle, header_name_ptr, user_data) header_name = header_name_ptr.read_string_to_null value = self.header_value(header_name) FFI::MemoryPointer.from_string(value) end |
#install_callbacks(context) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/proj/network_api.rb', line 5 def install_callbacks(context) @open_cbk = self.method(:open_callback) @close_cbk = self.method(:close_callback) @header_value_cbk = self.method(:header_value_callback) @read_range_cbk = self.method(:read_range_callback) result = Api.proj_context_set_network_callbacks(context, @open_cbk, @close_cbk, @header_value_cbk, @read_range_cbk, nil) if result != 1 Error.check_object(self) end end |
#open_callback(context, url, offset, size_to_read, buffer, out_size_read, error_string_max_size, out_error_string, user_data) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/proj/network_api.rb', line 18 def open_callback(context, url, offset, size_to_read, buffer, out_size_read, error_string_max_size, out_error_string, user_data) uri = URI.parse(url) data = self.open(uri, offset, size_to_read) out_size = [size_to_read, data.size].min out_size_read.write(:size_t, out_size) buffer.write_bytes(data, 0, out_size) # Return fake handle FFI::MemoryPointer.new(:size_t) end |
#read_range_callback(context, handle, offset, size_to_read, buffer, error_string_max_size, out_error_string, user_data) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/proj/network_api.rb', line 39 def read_range_callback(context, handle, offset, size_to_read, buffer, error_string_max_size, out_error_string, user_data) data = self.read_range(offset, size_to_read) out_size = [size_to_read, data.size].min buffer.write_bytes(data, 0, out_size) out_size end |