Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion R/socket.R
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ NULL
#' @method close nanoSocket
#' @export
#'
close.nanoSocket <- function(con, ...) invisible(.Call(rnng_close, con))
close.nanoSocket <- function(con, ...) invisible(.Call(rnng_socket_close, con))

#' Reap
#'
Expand Down
4 changes: 2 additions & 2 deletions src/aio.c
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,7 @@ SEXP rnng_send_aio(SEXP con, SEXP data, SEXP mode, SEXP timeout, SEXP pipe, SEXP

nng_aio_set_msg(saio->aio, msg);
nng_aio_set_timeout(saio->aio, dur);
sock ? nng_send_aio(*(nng_socket *) NANO_PTR(con), saio->aio) :
sock ? nng_socket_send(*(nng_socket *) NANO_PTR(con), saio->aio) :
nng_ctx_send(*(nng_ctx *) NANO_PTR(con), saio->aio);
NANO_FREE(buf);

Expand Down Expand Up @@ -740,7 +740,7 @@ SEXP rnng_recv_aio(SEXP con, SEXP mode, SEXP timeout, SEXP cvar, SEXP bytes, SEX
goto fail;

nng_aio_set_timeout(raio->aio, dur);
sock ? nng_recv_aio(*(nng_socket *) NANO_PTR(con), raio->aio) :
sock ? nng_socket_recv(*(nng_socket *) NANO_PTR(con), raio->aio) :
nng_ctx_recv(*(nng_ctx *) NANO_PTR(con), raio->aio);

PROTECT(aio = R_MakeExternalPtr(raio, nano_AioSymbol, NANO_PROT(con)));
Expand Down
12 changes: 6 additions & 6 deletions src/comms.c
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,8 @@ SEXP rnng_dial(SEXP socket, SEXP url, SEXP tls, SEXP autostart, SEXP fail) {
cfg = (nng_tls_config *) NANO_PTR(tls);
if ((xc = nng_dialer_create(dp, *sock, ur)) ||
(xc = nng_url_parse(&up, ur)) ||
(xc = nng_tls_config_server_name(cfg, up->u_hostname)) ||
(xc = nng_dialer_set_ptr(*dp, NNG_OPT_TLS_CONFIG, cfg)))
(xc = nng_tls_config_server_name(cfg, nng_url_hostname(up))) ||
(xc = nng_dialer_set_tls(*dp, cfg)))
goto fail;
nng_url_free(up);
if (start && (xc = nng_dialer_start(*dp, start == 1 ? NNG_FLAG_NONBLOCK : 0)))
Expand Down Expand Up @@ -223,7 +223,7 @@ SEXP rnng_listen(SEXP socket, SEXP url, SEXP tls, SEXP autostart, SEXP fail) {
if (sec) {
cfg = (nng_tls_config *) NANO_PTR(tls);
if ((xc = nng_listener_create(lp, *sock, ur)) ||
(xc = nng_listener_set_ptr(*lp, NNG_OPT_TLS_CONFIG, cfg)) ||
(xc = nng_listener_set_tls(*lp, cfg)) ||
(start && (xc = nng_listener_start(*lp, 0))))
goto fail;
nng_tls_config_hold(cfg);
Expand Down Expand Up @@ -389,7 +389,7 @@ SEXP rnng_send(SEXP con, SEXP data, SEXP mode, SEXP block, SEXP pipe) {

nng_aio_set_msg(aiop, msgp);
nng_aio_set_timeout(aiop, flags);
sock ? nng_send_aio(*(nng_socket *) NANO_PTR(con), aiop) :
sock ? nng_socket_send(*(nng_socket *) NANO_PTR(con), aiop) :
nng_ctx_send(*(nng_ctx *) NANO_PTR(con), aiop);
NANO_FREE(buf);
nng_aio_wait(aiop);
Expand Down Expand Up @@ -459,14 +459,14 @@ SEXP rnng_recv(SEXP con, SEXP mode, SEXP block, SEXP bytes) {

if ((xc = nng_recvmsg(*sock, &msgp, (flags < 0 || NANO_INTEGER(block) != 1) * NNG_FLAG_NONBLOCK)))
goto fail;

} else {

nng_aio *aiop = NULL;
if ((xc = nng_aio_alloc(&aiop, NULL, NULL)))
goto fail;
nng_aio_set_timeout(aiop, flags);
nng_recv_aio(*sock, aiop);
nng_socket_recv(*sock, aiop);
nng_aio_wait(aiop);
if ((xc = nng_aio_result(aiop))) {
nng_aio_free(aiop);
Expand Down
2 changes: 1 addition & 1 deletion src/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ void socket_finalizer(SEXP xptr) {

if (NANO_PTR(xptr) == NULL) return;
nng_socket *xp = (nng_socket *) NANO_PTR(xptr);
nng_close(*xp);
nng_socket_close(*xp);
free(xp);

}
Expand Down
4 changes: 3 additions & 1 deletion src/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ static const R_CallMethodDef callMethods[] = {
{"rnng_aio_result", (DL_FUNC) &rnng_aio_result, 1},
{"rnng_aio_stop", (DL_FUNC) &rnng_aio_stop, 1},
{"rnng_clock", (DL_FUNC) &rnng_clock, 0},
{"rnng_close", (DL_FUNC) &rnng_close, 1},
{"rnng_ctx_close", (DL_FUNC) &rnng_ctx_close, 1},
{"rnng_ctx_create", (DL_FUNC) &rnng_ctx_create, 1},
{"rnng_ctx_open", (DL_FUNC) &rnng_ctx_open, 1},
Expand Down Expand Up @@ -161,6 +160,7 @@ static const R_CallMethodDef callMethods[] = {
{"rnng_set_promise_context", (DL_FUNC) &rnng_set_promise_context, 2},
{"rnng_signal_thread_create", (DL_FUNC) &rnng_signal_thread_create, 2},
{"rnng_sleep", (DL_FUNC) &rnng_sleep, 1},
{"rnng_socket_close", (DL_FUNC) &rnng_socket_close, 1},
{"rnng_stats_get", (DL_FUNC) &rnng_stats_get, 2},
{"rnng_status_code", (DL_FUNC) &rnng_status_code, 1},
{"rnng_stream_close", (DL_FUNC) &rnng_stream_close, 1},
Expand All @@ -187,6 +187,7 @@ static const R_ExternalMethodDef externalMethods[] = {
void attribute_visible R_init_nanonext(DllInfo* dll) {
RegisterSymbols();
PreserveObjects();
nng_init(NULL);
nano_list_do(INIT, NULL);
R_registerRoutines(dll, NULL, callMethods, NULL, externalMethods);
R_useDynamicSymbols(dll, FALSE);
Expand All @@ -197,6 +198,7 @@ void attribute_visible R_init_nanonext(DllInfo* dll) {
void attribute_visible R_unload_nanonext(DllInfo *info) {
nano_thread_shutdown();
nano_list_do(SHUTDOWN, NULL);
nng_fini();
ReleaseObjects();
}
// # nocov end
24 changes: 3 additions & 21 deletions src/nanonext.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,14 @@
#define NANONEXT_H

#include <nng/nng.h>
#include <nng/supplemental/util/platform.h>
#include <nng/supplemental/tls/tls.h>

#ifdef NANONEXT_PROTOCOLS
#include <nng/protocol/bus0/bus.h>
#include <nng/protocol/pair0/pair.h>
#include <nng/protocol/pair1/pair.h>
#include <nng/protocol/pubsub0/pub.h>
#include <nng/protocol/pubsub0/sub.h>
#include <nng/protocol/pipeline0/pull.h>
#include <nng/protocol/pipeline0/push.h>
#include <nng/protocol/reqrep0/req.h>
#include <nng/protocol/reqrep0/rep.h>
#include <nng/protocol/survey0/survey.h>
#include <nng/protocol/survey0/respond.h>
#endif

#ifdef NANONEXT_HTTP
#include <nng/supplemental/http/http.h>
#include <nng/http.h>

typedef struct nano_handle_s {
nng_url *url;
nng_http_client *cli;
nng_http_req *req;
nng_http_res *res;
nng_http *conn;
nng_tls_config *cfg;
} nano_handle;

Expand Down Expand Up @@ -143,7 +126,6 @@ extern int R_interrupts_pending;

typedef union nano_opt_u {
char *str;
uint64_t u;
size_t s;
nng_duration d;
int i;
Expand Down Expand Up @@ -346,7 +328,6 @@ SEXP rnng_aio_http_status(SEXP);
SEXP rnng_aio_result(SEXP);
SEXP rnng_aio_stop(SEXP);
SEXP rnng_clock(void);
SEXP rnng_close(SEXP);
SEXP rnng_ctx_close(SEXP);
SEXP rnng_ctx_create(SEXP);
SEXP rnng_ctx_open(SEXP);
Expand Down Expand Up @@ -399,6 +380,7 @@ SEXP rnng_set_opt(SEXP, SEXP, SEXP);
SEXP rnng_set_promise_context(SEXP, SEXP);
SEXP rnng_signal_thread_create(SEXP, SEXP);
SEXP rnng_sleep(SEXP);
SEXP rnng_socket_close(SEXP);
SEXP rnng_stats_get(SEXP, SEXP);
SEXP rnng_status_code(SEXP);
SEXP rnng_stream_close(SEXP);
Expand Down
Loading
Loading