Skip to content

Commit 6163836

Browse files
committed
RC12; further error generation efficiencies
1 parent d8d42a0 commit 6163836

File tree

4 files changed

+12
-20
lines changed

4 files changed

+12
-20
lines changed

src/core.c

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,13 @@
2121

2222
// internals -------------------------------------------------------------------
2323

24-
static SEXP mk_error(const int xc) {
24+
SEXP mk_error(const int xc) {
2525

2626
SET_INTEGER_ELT(nano_error, 0, xc);
2727
return nano_error;
2828

2929
}
3030

31-
SEXP mk_werror(const int xc) {
32-
33-
Rf_warning("%d | %s", xc, nng_strerror(xc));
34-
SET_INTEGER_ELT(nano_error, 0, xc);
35-
return nano_error;
36-
37-
}
38-
3931
SEXP mk_error_recv(const int xc) {
4032

4133
const char *names[] = {"raw", "data", ""};
@@ -481,7 +473,7 @@ SEXP rnng_ctx_close(SEXP context) {
481473
const int xc = nng_ctx_close(*ctxp);
482474

483475
if (xc)
484-
return mk_werror(xc);
476+
ERROR_RET(xc);
485477

486478
Rf_setAttrib(context, nano_StateSymbol, Rf_mkString("closed"));
487479
return nano_success;
@@ -503,7 +495,7 @@ SEXP rnng_dial(SEXP socket, SEXP url, SEXP autostart) {
503495
const int xc = start ? nng_dial(*sock, up, dp, NNG_FLAG_NONBLOCK) : nng_dialer_create(dp, *sock, up);
504496
if (xc) {
505497
R_Free(dp);
506-
return mk_werror(xc);
498+
ERROR_RET(xc);
507499
}
508500

509501
PROTECT(dialer = R_MakeExternalPtr(dp, nano_DialerSymbol, R_NilValue));
@@ -552,7 +544,7 @@ SEXP rnng_listen(SEXP socket, SEXP url, SEXP autostart) {
552544
const int xc = start ? nng_listen(*sock, up, lp, 0) : nng_listener_create(lp, *sock, up);
553545
if (xc) {
554546
R_Free(lp);
555-
return mk_werror(xc);
547+
ERROR_RET(xc);
556548
}
557549

558550
PROTECT(listener = R_MakeExternalPtr(lp, nano_ListenerSymbol, R_NilValue));
@@ -596,7 +588,7 @@ SEXP rnng_dialer_start(SEXP dialer, SEXP async) {
596588
const int flags = LOGICAL(async)[0] ? NNG_FLAG_NONBLOCK : 0;
597589
const int xc = nng_dialer_start(*dial, flags);
598590
if (xc)
599-
return mk_werror(xc);
591+
ERROR_RET(xc);
600592

601593
Rf_setAttrib(dialer, nano_StateSymbol, Rf_mkString("started"));
602594
return nano_success;
@@ -610,7 +602,7 @@ SEXP rnng_listener_start(SEXP listener) {
610602
nng_listener *list = (nng_listener *) R_ExternalPtrAddr(listener);
611603
const int xc = nng_listener_start(*list, 0);
612604
if (xc)
613-
return mk_werror(xc);
605+
ERROR_RET(xc);
614606

615607
Rf_setAttrib(listener, nano_StateSymbol, Rf_mkString("started"));
616608
return nano_success;
@@ -624,7 +616,7 @@ SEXP rnng_dialer_close(SEXP dialer) {
624616
nng_dialer *dial = (nng_dialer *) R_ExternalPtrAddr(dialer);
625617
const int xc = nng_dialer_close(*dial);
626618
if (xc)
627-
return mk_werror(xc);
619+
ERROR_RET(xc);
628620

629621
Rf_setAttrib(dialer, nano_StateSymbol, Rf_mkString("closed"));
630622
return nano_success;
@@ -638,7 +630,7 @@ SEXP rnng_listener_close(SEXP listener) {
638630
nng_listener *list = (nng_listener *) R_ExternalPtrAddr(listener);
639631
const int xc = nng_listener_close(*list);
640632
if (xc)
641-
return mk_werror(xc);
633+
ERROR_RET(xc);
642634

643635
Rf_setAttrib(listener, nano_StateSymbol, Rf_mkString("closed"));
644636
return nano_success;
@@ -1092,7 +1084,7 @@ SEXP rnng_set_opt(SEXP object, SEXP type, SEXP opt, SEXP value) {
10921084
}
10931085

10941086
if (xc)
1095-
return mk_werror(xc);
1087+
ERROR_RET(xc);
10961088

10971089
return nano_success;
10981090

src/init.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ SEXP nano_aioFormals;
4545
SEXP nano_aioFuncs;
4646
SEXP nano_aioNFuncs;
4747
SEXP nano_error;
48-
SEXP nano_errorLists;
4948
SEXP nano_ncurlAio;
5049
SEXP nano_recvAio;
5150
SEXP nano_sendAio;

src/nanonext.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@
6363

6464
#ifdef NANONEXT_INTERNALS
6565
#define ERROR_OUT(xc) Rf_error("%d | %s", xc, nng_strerror(xc))
66-
extern SEXP mk_werror(const int);
66+
#define ERROR_RET(xc) { Rf_warning("%d | %s", xc, nng_strerror(xc)); return mk_error(xc); }
67+
extern SEXP mk_error(const int);
6768
extern SEXP mk_error_recv(const int);
6869
extern SEXP mk_error_ncurl(const int);
6970
extern SEXP nano_decode(unsigned char *, size_t, const int, const int);

src/protocol.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ SEXP rnng_close(SEXP socket) {
152152
nng_socket *sock = (nng_socket *) R_ExternalPtrAddr(socket);
153153
const int xc = nng_close(*sock);
154154
if (xc)
155-
return mk_werror(xc);
155+
ERROR_RET(xc);
156156

157157
Rf_setAttrib(socket, nano_StateSymbol, Rf_mkString("closed"));
158158
return nano_success;

0 commit comments

Comments
 (0)