# File lib/ffi-rzmq/socket.rb, line 126 def setsockopt name, value, length = nil if 1 == @option_lookup[name] length = 8 pointer = LibC.malloc length pointer.write_long_long value elsif 0 == @option_lookup[name] length = 4 pointer = LibC.malloc length pointer.write_int value elsif 2 == @option_lookup[name] # Strings are treated as pointers by FFI so we'll just pass it through length ||= value.size pointer = value end rc = LibZMQ.zmq_setsockopt @socket, name, pointer, length LibC.free(pointer) unless pointer.is_a?(String) || pointer.nil? || pointer.null? rc end