diff options
| author | Garrett D'Amore <garrett@damore.org> | 2020-11-11 21:29:54 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2020-11-11 23:51:13 -0800 |
| commit | 66ff33813a8cd9d4cba96280bb613762fb0c2ce2 (patch) | |
| tree | 4d9230b87715ebb1ff876894cd805ee4da42eccb /src/core/sockimpl.h | |
| parent | 53f20bbc4a2bd0d333e0307640883a778de31e2b (diff) | |
| download | nng-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/core/sockimpl.h')
| -rw-r--r-- | src/core/sockimpl.h | 107 |
1 files changed, 51 insertions, 56 deletions
diff --git a/src/core/sockimpl.h b/src/core/sockimpl.h index 732e2285..804fa00c 100644 --- a/src/core/sockimpl.h +++ b/src/core/sockimpl.h @@ -15,25 +15,6 @@ // and pipes. This must not be exposed to other subsystems -- these internals // are subject to change at any time. -typedef struct nni_dialer_stats { - nni_stat_item s_root; - nni_stat_item s_id; - nni_stat_item s_sock; - nni_stat_item s_url; - nni_stat_item s_npipes; - nni_stat_item s_connok; - nni_stat_item s_refused; - nni_stat_item s_discon; - nni_stat_item s_canceled; - nni_stat_item s_othererr; - nni_stat_item s_etimedout; - nni_stat_item s_eproto; // protocol error - nni_stat_item s_eauth; - nni_stat_item s_enomem; - nni_stat_item s_reject; - char s_scope[24]; // scope name for stats -} nni_dialer_stats; - struct nni_dialer { nni_tran_dialer_ops d_ops; // transport ops nni_tran * d_tran; // transport pointer @@ -42,8 +23,8 @@ struct nni_dialer { nni_list_node d_node; // per socket list nni_sock * d_sock; nni_url * d_url; - nni_pipe * d_pipe; // active pipe (for redialer) - int d_refcnt; + nni_pipe * d_pipe; // active pipe (for re-dialer) + int d_ref; bool d_closed; // full shutdown bool d_closing; nni_atomic_flag d_started; @@ -57,26 +38,25 @@ struct nni_dialer { nni_duration d_inirtime; // initial time for reconnect nni_time d_conntime; // time of last good connect nni_reap_item d_reap; - nni_dialer_stats d_stats; -}; -typedef struct nni_listener_stats { - nni_stat_item s_root; - nni_stat_item s_id; - nni_stat_item s_sock; - nni_stat_item s_url; - nni_stat_item s_npipes; - nni_stat_item s_accept; - nni_stat_item s_discon; // aborted remotely - nni_stat_item s_canceled; - nni_stat_item s_othererr; - nni_stat_item s_etimedout; - nni_stat_item s_eproto; // protocol error - nni_stat_item s_eauth; - nni_stat_item s_enomem; - nni_stat_item s_reject; - char s_scope[24]; // scope name for stats -} nni_listener_stats; +#ifdef NNG_ENABLE_STATS + nni_stat_item st_root; + nni_stat_item st_id; + nni_stat_item st_sock; + nni_stat_item st_url; + nni_stat_item st_pipes; + nni_stat_item st_connect; + nni_stat_item st_refused; + nni_stat_item st_disconnect; // aborted remotely + nni_stat_item st_canceled; + nni_stat_item st_other; + nni_stat_item st_timeout; + nni_stat_item st_proto; // protocol error + nni_stat_item st_auth; + nni_stat_item st_oom; + nni_stat_item st_reject; +#endif +}; struct nni_listener { nni_tran_listener_ops l_ops; // transport ops @@ -86,7 +66,7 @@ struct nni_listener { nni_list_node l_node; // per socket list nni_sock * l_sock; nni_url * l_url; - int l_refcnt; + int l_ref; bool l_closed; // full shutdown bool l_closing; // close started (shutdown) nni_atomic_flag l_started; @@ -94,20 +74,24 @@ struct nni_listener { nni_aio l_acc_aio; nni_aio l_tmo_aio; nni_reap_item l_reap; - nni_listener_stats l_stats; -}; -typedef struct nni_pipe_stats { - nni_stat_item s_root; - nni_stat_item s_id; - nni_stat_item s_ep_id; - nni_stat_item s_sock_id; - nni_stat_item s_rxmsgs; - nni_stat_item s_txmsgs; - nni_stat_item s_rxbytes; - nni_stat_item s_txbytes; - char s_scope[16]; // scope name for stats ("pipe" is short) -} nni_pipe_stats; +#ifdef NNG_ENABLE_STATS + nni_stat_item st_root; + nni_stat_item st_id; + nni_stat_item st_sock; + nni_stat_item st_url; + nni_stat_item st_pipes; + nni_stat_item st_accept; + nni_stat_item st_disconnect; // aborted remotely + nni_stat_item st_canceled; + nni_stat_item st_other; + nni_stat_item st_timeout; + nni_stat_item st_proto; // protocol error + nni_stat_item st_auth; + nni_stat_item st_oom; + nni_stat_item st_reject; +#endif +}; struct nni_pipe { uint32_t p_id; @@ -124,11 +108,22 @@ struct nni_pipe { bool p_closed; nni_atomic_flag p_stop; bool p_cbs; - int p_refcnt; + int p_ref; nni_mtx p_mtx; nni_cv p_cv; nni_reap_item p_reap; - nni_pipe_stats p_stats; + +#ifdef NNG_ENABLE_STATS + nni_stat_item st_root; + nni_stat_item st_id; + nni_stat_item st_ep_id; + nni_stat_item st_sock_id; + nni_stat_item st_rx_msgs; + nni_stat_item st_tx_msgs; + nni_stat_item st_rx_bytes; + nni_stat_item st_tx_bytes; + +#endif }; extern int nni_sock_add_dialer(nni_sock *, nni_dialer *); |
