module Proj::NetworkApiCallbacks
Public Instance Methods
close_callback(context, handle, user_data)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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