Class: NNG::Socket::Sub0

Inherits:
Object
  • Object
show all
Defined in:
ext/rbnng/sub0.c

Instance Method Summary collapse

Constructor Details

#initializeObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'ext/rbnng/sub0.c', line 11

static VALUE
socket_sub0_initialize(VALUE self)
{
  RbnngSocket* p_rbnngSocket;
  Data_Get_Struct(self, RbnngSocket, p_rbnngSocket);
  int rv;
  if ((rv = nng_sub0_open(&p_rbnngSocket->socket)) != 0) {
    raise_error(rv);
    return Qnil;
  }

  if ((rv = nng_socket_set(p_rbnngSocket->socket, NNG_OPT_SUB_SUBSCRIBE, "", 0)) != 0) {
    raise_error(rv);
    return Qnil;
  }

  return self;
}

Instance Method Details

#dial(url) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
# File 'ext/rbnng/socket.c', line 102

VALUE
socket_dial(VALUE self, VALUE url)
{
  Check_Type(url, T_STRING);
  RbnngSocket* p_rbnngSocket;
  Data_Get_Struct(self, RbnngSocket, p_rbnngSocket);
  int rv;
  if ((rv = nng_dial(p_rbnngSocket->socket, StringValueCStr(url), 0, 0)) != 0) {
    raise_error(rv);
  }
}

#get_msgObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'ext/rbnng/socket.c', line 39

VALUE
socket_get_msg(VALUE self)
{
  RbnngSocket* p_rbnngSocket;
  Data_Get_Struct(self, RbnngSocket, p_rbnngSocket);

  int rv =
    rb_thread_call_without_gvl(socket_get_msg_blocking, p_rbnngSocket, 0, 0);

  if (rv == 0) {
    RbnngMsg* p_newMsg;
    VALUE newMsg = rb_class_new_instance(0, 0, rbnng_MsgClass);
    Data_Get_Struct(newMsg, RbnngMsg, p_newMsg);
    p_newMsg->p_msg = p_rbnngSocket->p_getMsgResult;
    return newMsg;
  } else {
    raise_error(rv);
    return Qnil;
  }
}