@@ -10,6 +10,7 @@ static void context_finalizer(SEXP xptr) {
1010 if (R_ExternalPtrAddr (xptr ) == NULL )
1111 return ;
1212 nng_ctx * xp = (nng_ctx * ) R_ExternalPtrAddr (xptr );
13+ nng_ctx_close (* xp );
1314 R_Free (xp );
1415 R_ClearExternalPtr (xptr );
1516
@@ -20,6 +21,7 @@ static void dialer_finalizer(SEXP xptr) {
2021 if (R_ExternalPtrAddr (xptr ) == NULL )
2122 return ;
2223 nng_dialer * xp = (nng_dialer * ) R_ExternalPtrAddr (xptr );
24+ nng_dialer_close (* xp );
2325 R_Free (xp );
2426 R_ClearExternalPtr (xptr );
2527
@@ -30,6 +32,7 @@ static void listener_finalizer(SEXP xptr) {
3032 if (R_ExternalPtrAddr (xptr ) == NULL )
3133 return ;
3234 nng_listener * xp = (nng_listener * ) R_ExternalPtrAddr (xptr );
35+ nng_listener_close (* xp );
3336 R_Free (xp );
3437 R_ClearExternalPtr (xptr );
3538
@@ -54,12 +57,10 @@ SEXP rnng_ctx_open(SEXP socket) {
5457 SET_STRING_ELT (klass , 0 , Rf_mkChar ("nanoContext" ));
5558 SET_STRING_ELT (klass , 1 , Rf_mkChar ("nano" ));
5659 Rf_classgets (context , klass );
57- int id = nng_ctx_id (* ctxp );
58- Rf_setAttrib (context , nano_IdSymbol , Rf_ScalarInteger (id ));
60+ Rf_setAttrib (context , nano_IdSymbol , Rf_ScalarInteger ((int ) ctxp -> id ));
5961 Rf_setAttrib (context , nano_StateSymbol , Rf_mkString ("opened" ));
6062 Rf_setAttrib (context , nano_ProtocolSymbol , Rf_getAttrib (socket , nano_ProtocolSymbol ));
61- int sid = nng_socket_id (* sock );
62- Rf_setAttrib (context , nano_SocketSymbol , Rf_ScalarInteger (sid ));
63+ Rf_setAttrib (context , nano_SocketSymbol , Rf_ScalarInteger ((int ) sock -> id ));
6364
6465 UNPROTECT (2 );
6566 return context ;
@@ -98,12 +99,10 @@ SEXP rnng_dial(SEXP socket, SEXP url) {
9899 SET_STRING_ELT (klass , 0 , Rf_mkChar ("nanoDialer" ));
99100 SET_STRING_ELT (klass , 1 , Rf_mkChar ("nano" ));
100101 Rf_classgets (dialer , klass );
101- int id = nng_dialer_id (* dp );
102- Rf_setAttrib (dialer , nano_IdSymbol , Rf_ScalarInteger (id ));
102+ Rf_setAttrib (dialer , nano_IdSymbol , Rf_ScalarInteger ((int ) dp -> id ));
103103 Rf_setAttrib (dialer , nano_UrlSymbol , url );
104104 Rf_setAttrib (dialer , nano_StateSymbol , Rf_mkString ("started" ));
105- int sid = nng_socket_id (* sock );
106- Rf_setAttrib (dialer , nano_SocketSymbol , Rf_ScalarInteger (sid ));
105+ Rf_setAttrib (dialer , nano_SocketSymbol , Rf_ScalarInteger ((int ) sock -> id ));
107106
108107 UNPROTECT (2 );
109108 return dialer ;
@@ -128,12 +127,10 @@ SEXP rnng_dialer_create(SEXP socket, SEXP url) {
128127 SET_STRING_ELT (klass , 0 , Rf_mkChar ("nanoDialer" ));
129128 SET_STRING_ELT (klass , 1 , Rf_mkChar ("nano" ));
130129 Rf_classgets (dialer , klass );
131- int id = nng_dialer_id (* dp );
132- Rf_setAttrib (dialer , nano_IdSymbol , Rf_ScalarInteger (id ));
130+ Rf_setAttrib (dialer , nano_IdSymbol , Rf_ScalarInteger ((int ) dp -> id ));
133131 Rf_setAttrib (dialer , nano_UrlSymbol , url );
134132 Rf_setAttrib (dialer , nano_StateSymbol , Rf_mkString ("not started" ));
135- int sid = nng_socket_id (* sock );
136- Rf_setAttrib (dialer , nano_SocketSymbol , Rf_ScalarInteger (sid ));
133+ Rf_setAttrib (dialer , nano_SocketSymbol , Rf_ScalarInteger ((int ) sock -> id ));
137134
138135 UNPROTECT (2 );
139136 return dialer ;
@@ -158,12 +155,10 @@ SEXP rnng_listen(SEXP socket, SEXP url) {
158155 SET_STRING_ELT (klass , 0 , Rf_mkChar ("nanoListener" ));
159156 SET_STRING_ELT (klass , 1 , Rf_mkChar ("nano" ));
160157 Rf_classgets (listener , klass );
161- int id = nng_listener_id (* lp );
162- Rf_setAttrib (listener , nano_IdSymbol , Rf_ScalarInteger (id ));
158+ Rf_setAttrib (listener , nano_IdSymbol , Rf_ScalarInteger ((int ) lp -> id ));
163159 Rf_setAttrib (listener , nano_UrlSymbol , url );
164160 Rf_setAttrib (listener , nano_StateSymbol , Rf_mkString ("started" ));
165- int sid = nng_socket_id (* sock );
166- Rf_setAttrib (listener , nano_SocketSymbol , Rf_ScalarInteger (sid ));
161+ Rf_setAttrib (listener , nano_SocketSymbol , Rf_ScalarInteger ((int ) sock -> id ));
167162
168163 UNPROTECT (2 );
169164 return listener ;
@@ -188,12 +183,10 @@ SEXP rnng_listener_create(SEXP socket, SEXP url) {
188183 SET_STRING_ELT (klass , 0 , Rf_mkChar ("nanoListener" ));
189184 SET_STRING_ELT (klass , 1 , Rf_mkChar ("nano" ));
190185 Rf_classgets (listener , klass );
191- int id = nng_listener_id (* lp );
192- Rf_setAttrib (listener , nano_IdSymbol , Rf_ScalarInteger (id ));
186+ Rf_setAttrib (listener , nano_IdSymbol , Rf_ScalarInteger ((int ) lp -> id ));
193187 Rf_setAttrib (listener , nano_UrlSymbol , url );
194188 Rf_setAttrib (listener , nano_StateSymbol , Rf_mkString ("not started" ));
195- int sid = nng_socket_id (* sock );
196- Rf_setAttrib (listener , nano_SocketSymbol , Rf_ScalarInteger (sid ));
189+ Rf_setAttrib (listener , nano_SocketSymbol , Rf_ScalarInteger ((int ) sock -> id ));
197190
198191 UNPROTECT (2 );
199192 return listener ;
0 commit comments