/* * Document-method: socket * * call-seq: * zmq.socket(socket_type) * * Creates a new 0MQ socket. The socket_type argument specifies the socket * type, which determines the semantics of communication over the socket. * * The newly created socket is initially unbound, and not associated with any * endpoints. In order to establish a message flow a socket must first be * connected to at least one endpoint with connect(), or at least one * endpoint must be created for accepting incoming connections with * bind(). * * For a description of the various socket types, see ZMQ::Socket. */ static VALUE context_socket (VALUE self_, VALUE type_) { void * c = NULL; Data_Get_Struct (self_, void, c); void * s = zmq_socket (c, NUM2INT (type_)); if (!s) { rb_raise (rb_eRuntimeError, "%s", zmq_strerror (zmq_errno ())); return Qnil; } return Data_Wrap_Struct(socket_type, 0, socket_free, s); }