aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2020-11-11 21:29:54 -0800
committerGarrett D'Amore <garrett@damore.org>2020-11-11 23:51:13 -0800
commit66ff33813a8cd9d4cba96280bb613762fb0c2ce2 (patch)
tree4d9230b87715ebb1ff876894cd805ee4da42eccb /src/transport
parent53f20bbc4a2bd0d333e0307640883a778de31e2b (diff)
downloadnng-66ff33813a8cd9d4cba96280bb613762fb0c2ce2.tar.gz
nng-66ff33813a8cd9d4cba96280bb613762fb0c2ce2.tar.bz2
nng-66ff33813a8cd9d4cba96280bb613762fb0c2ce2.zip
fixes #1323 stats framework is *way* to heavy
This should reduce the amount of copying, and the overall size used by pipes and other objects quite a bit. (On my system, the sizeof nni_pipe shrank by 400 bytes, for example.)
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/ipc/ipc.c26
-rw-r--r--src/transport/tcp/tcp.c33
-rw-r--r--src/transport/tls/tls.c29
3 files changed, 65 insertions, 23 deletions
diff --git a/src/transport/ipc/ipc.c b/src/transport/ipc/ipc.c
index 16fbc42b..ea135ad8 100644
--- a/src/transport/ipc/ipc.c
+++ b/src/transport/ipc/ipc.c
@@ -70,7 +70,9 @@ struct ipc_ep {
nni_list wait_pipes; // pipes waiting to match to socket
nni_list neg_pipes; // pipes busy negotiating
nni_reap_item reap;
- nni_stat_item st_rcv_max;
+#ifdef NNG_ENABLE_STATS
+ nni_stat_item st_rcv_max;
+#endif
};
static void ipc_pipe_send_start(ipc_pipe *p);
@@ -807,9 +809,16 @@ ipc_ep_init(ipc_ep **epp, nni_sock *sock)
ep->proto = nni_sock_proto_id(sock);
- nni_stat_init(&ep->st_rcv_max, "rcvmaxsz", "maximum receive size");
- nni_stat_set_type(&ep->st_rcv_max, NNG_STAT_LEVEL);
- nni_stat_set_unit(&ep->st_rcv_max, NNG_UNIT_BYTES);
+#ifdef NNG_ENABLE_STATS
+ static const nni_stat_info rcv_max_info = {
+ .si_name = "rcv_max",
+ .si_desc = "maximum receive size",
+ .si_type = NNG_STAT_LEVEL,
+ .si_unit = NNG_UNIT_BYTES,
+ .si_atomic = true,
+ };
+ nni_stat_init(&ep->st_rcv_max, &rcv_max_info);
+#endif
*epp = ep;
return (0);
@@ -831,8 +840,9 @@ ipc_ep_init_dialer(void **dp, nni_url *url, nni_dialer *dialer)
ipc_ep_fini(ep);
return (rv);
}
-
+#ifdef NNG_ENABLE_STATS
nni_dialer_add_stat(dialer, &ep->st_rcv_max);
+#endif
*dp = ep;
return (0);
}
@@ -855,7 +865,9 @@ ipc_ep_init_listener(void **dp, nni_url *url, nni_listener *listener)
return (rv);
}
+#ifdef NNG_ENABLE_STATS
nni_listener_add_stat(listener, &ep->st_rcv_max);
+#endif
*dp = ep;
return (0);
}
@@ -934,8 +946,10 @@ ipc_ep_set_recv_max_sz(void *arg, const void *v, size_t sz, nni_type t)
NNI_LIST_FOREACH (&ep->busy_pipes, p) {
p->rcv_max = val;
}
- nni_stat_set_value(&ep->st_rcv_max, val);
nni_mtx_unlock(&ep->mtx);
+#ifdef NNG_ENABLE_STATS
+ nni_stat_set_value(&ep->st_rcv_max, val);
+#endif
}
return (rv);
}
diff --git a/src/transport/tcp/tcp.c b/src/transport/tcp/tcp.c
index c978b279..02bc078e 100644
--- a/src/transport/tcp/tcp.c
+++ b/src/transport/tcp/tcp.c
@@ -68,7 +68,10 @@ struct tcptran_ep {
nni_reap_item reap;
nng_stream_dialer * dialer;
nng_stream_listener *listener;
- nni_stat_item st_rcvmaxsz;
+
+#ifdef NNG_ENABLE_STATS
+ nni_stat_item st_rcv_max;
+#endif
};
static void tcptran_pipe_send_start(tcptran_pipe *);
@@ -173,7 +176,8 @@ tcptran_pipe_alloc(tcptran_pipe **pipep)
nni_mtx_init(&p->mtx);
if (((rv = nni_aio_alloc(&p->txaio, tcptran_pipe_send_cb, p)) != 0) ||
((rv = nni_aio_alloc(&p->rxaio, tcptran_pipe_recv_cb, p)) != 0) ||
- ((rv = nni_aio_alloc(&p->negoaio, tcptran_pipe_nego_cb, p)) != 0)) {
+ ((rv = nni_aio_alloc(&p->negoaio, tcptran_pipe_nego_cb, p)) !=
+ 0)) {
tcptran_pipe_fini(p);
return (rv);
}
@@ -857,9 +861,16 @@ tcptran_ep_init(tcptran_ep **epp, nng_url *url, nni_sock *sock)
ep->proto = nni_sock_proto_id(sock);
ep->url = url;
- nni_stat_init(&ep->st_rcvmaxsz, "rcvmaxsz", "maximum receive size");
- nni_stat_set_type(&ep->st_rcvmaxsz, NNG_STAT_LEVEL);
- nni_stat_set_unit(&ep->st_rcvmaxsz, NNG_UNIT_BYTES);
+#ifdef NNG_ENABLE_STATS
+ static const nni_stat_info rcv_max_info = {
+ .si_name = "rcv_max",
+ .si_desc = "maximum receive size",
+ .si_type = NNG_STAT_LEVEL,
+ .si_unit = NNG_UNIT_BYTES,
+ .si_atomic = true,
+ };
+ nni_stat_init(&ep->st_rcv_max, &rcv_max_info);
+#endif
*epp = ep;
return (0);
@@ -905,7 +916,9 @@ tcptran_dialer_init(void **dp, nng_url *url, nni_dialer *ndialer)
return (rv);
}
- nni_dialer_add_stat(ndialer, &ep->st_rcvmaxsz);
+#ifdef NNG_ENABLE_STATS
+ nni_dialer_add_stat(ndialer, &ep->st_rcv_max);
+#endif
*dp = ep;
return (0);
}
@@ -936,7 +949,9 @@ tcptran_listener_init(void **lp, nng_url *url, nni_listener *nlistener)
tcptran_ep_fini(ep);
return (rv);
}
- nni_listener_add_stat(nlistener, &ep->st_rcvmaxsz);
+#ifdef NNG_ENABLE_STATS
+ nni_listener_add_stat(nlistener, &ep->st_rcv_max);
+#endif
*lp = ep;
return (0);
@@ -1036,8 +1051,10 @@ tcptran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
NNI_LIST_FOREACH (&ep->busypipes, p) {
p->rcvmax = val;
}
- nni_stat_set_value(&ep->st_rcvmaxsz, val);
nni_mtx_unlock(&ep->mtx);
+#ifdef NNG_ENABLE_STATS
+ nni_stat_set_value(&ep->st_rcv_max, val);
+#endif
}
return (rv);
}
diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c
index b9fa064e..ae5d86ec 100644
--- a/src/transport/tls/tls.c
+++ b/src/transport/tls/tls.c
@@ -78,7 +78,7 @@ struct tlstran_ep {
const char * host;
nng_sockaddr src;
nng_sockaddr sa;
- nni_stat_item st_rcvmaxsz;
+ nni_stat_item st_rcv_max;
};
static void tlstran_pipe_send_start(tlstran_pipe *);
@@ -833,9 +833,16 @@ tlstran_ep_init(tlstran_ep **epp, nng_url *url, nni_sock *sock)
ep->proto = nni_sock_proto_id(sock);
ep->url = url;
- nni_stat_init(&ep->st_rcvmaxsz, "rcvmaxsz", "maximum receive size");
- nni_stat_set_type(&ep->st_rcvmaxsz, NNG_STAT_LEVEL);
- nni_stat_set_unit(&ep->st_rcvmaxsz, NNG_UNIT_BYTES);
+#ifdef NNG_ENABLE_STATS
+ static const nni_stat_info rcv_max_info = {
+ .si_name = "rcv_max",
+ .si_desc = "maximum receive size",
+ .si_type = NNG_STAT_LEVEL,
+ .si_unit = NNG_UNIT_BYTES,
+ .si_atomic = true,
+ };
+ nni_stat_init(&ep->st_rcv_max, &rcv_max_info);
+#endif
*epp = ep;
return (0);
@@ -881,7 +888,9 @@ tlstran_ep_init_dialer(void **dp, nni_url *url, nni_dialer *ndialer)
tlstran_ep_fini(ep);
return (rv);
}
- nni_dialer_add_stat(ndialer, &ep->st_rcvmaxsz);
+#ifdef NNG_ENABLE_STATS
+ nni_dialer_add_stat(ndialer, &ep->st_rcv_max);
+#endif
*dp = ep;
return (0);
}
@@ -949,8 +958,9 @@ tlstran_ep_init_listener(void **lp, nni_url *url, nni_listener *nlistener)
tlstran_ep_fini(ep);
return (rv);
}
-
- nni_listener_add_stat(nlistener, &ep->st_rcvmaxsz);
+#ifdef NNG_ENABLE_STATS
+ nni_listener_add_stat(nlistener, &ep->st_rcv_max);
+#endif
*lp = ep;
return (0);
}
@@ -1066,9 +1076,10 @@ tlstran_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_type t)
NNI_LIST_FOREACH (&ep->busypipes, p) {
p->rcvmax = val;
}
- nni_stat_set_value(&ep->st_rcvmaxsz, val);
-
nni_mtx_unlock(&ep->mtx);
+#ifdef NNG_ENABLE_STATS
+ nni_stat_set_value(&ep->st_rcv_max, val);
+#endif
}
return (rv);
}