# 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