@@ -58,56 +58,54 @@ typedef uint8_t as_latency_type;
58
58
* Latency bucket counts are cumulative and not reset on each metrics snapshot interval
59
59
*/
60
60
typedef struct as_latency_buckets_s {
61
- int32_t latency_shift ;
62
- int32_t latency_columns ;
61
+ uint32_t latency_shift ;
62
+ uint32_t latency_columns ;
63
63
uint64_t * buckets ;
64
64
} as_latency_buckets ;
65
65
66
- struct as_metrics_listeners_s ;
67
-
68
- /**
69
- * Metrics Policy
70
- */
71
- typedef struct as_policy_metrics_s {
72
- const char * report_directory ; // where the metrics file is output
73
-
74
- int64_t report_size_limit ; // default 0
75
-
76
- int32_t interval ; // default 30
77
-
78
- int32_t latency_columns ; // default 7
79
-
80
- int32_t latency_shift ; // default 1
81
-
82
- struct as_metrics_listeners_s * metrics_listeners ;
83
-
84
- void * udata ;
85
- } as_policy_metrics ;
86
-
87
- struct as_cluster_s ;
66
+ struct as_policy_metrics_s ;
88
67
struct as_node_s ;
68
+ struct as_cluster_s ;
89
69
90
70
/**
91
71
* Callbacks for metrics listener operations
92
72
*/
93
- typedef as_status ( * as_metrics_enable_callback )(as_error * err , const struct as_policy_metrics_s * policy );
73
+ typedef as_status ( * as_metrics_enable_listener )(as_error * err , const struct as_policy_metrics_s * policy , void * udata );
94
74
95
- typedef as_status ( * as_metrics_snapshot_callback )(as_error * err , struct as_cluster_s * cluster , void * udata );
75
+ typedef as_status ( * as_metrics_snapshot_listener )(as_error * err , struct as_cluster_s * cluster , void * udata );
96
76
97
- typedef as_status ( * as_metrics_node_close_callback )(as_error * err , struct as_node_s * node , void * udata );
77
+ typedef as_status ( * as_metrics_node_close_listener )(as_error * err , struct as_node_s * node , void * udata );
98
78
99
- typedef as_status ( * as_metrics_disable_callback )(as_error * err , struct as_cluster_s * cluster , void * udata );
79
+ typedef as_status ( * as_metrics_disable_listener )(as_error * err , struct as_cluster_s * cluster , void * udata );
100
80
101
81
/**
102
82
* Struct to hold required callbacks
103
83
*/
104
84
typedef struct as_metrics_listeners_s {
105
- as_metrics_enable_callback enable_callback ;
106
- as_metrics_snapshot_callback snapshot_callback ;
107
- as_metrics_node_close_callback node_close_callback ;
108
- as_metrics_disable_callback disable_callback ;
85
+ as_metrics_enable_listener enable_listener ;
86
+ as_metrics_snapshot_listener snapshot_listener ;
87
+ as_metrics_node_close_listener node_close_listener ;
88
+ as_metrics_disable_listener disable_listener ;
89
+ void * udata ;
109
90
} as_metrics_listeners ;
110
91
92
+ /**
93
+ * Metrics Policy
94
+ */
95
+ typedef struct as_policy_metrics_s {
96
+ const char * report_directory ; // where the metrics file is output
97
+
98
+ uint64_t report_size_limit ; // default 0
99
+
100
+ uint32_t interval ; // default 30
101
+
102
+ uint32_t latency_columns ; // default 7
103
+
104
+ uint32_t latency_shift ; // default 1
105
+
106
+ as_metrics_listeners metrics_listeners ;
107
+ } as_policy_metrics ;
108
+
111
109
/**
112
110
* Node metrics latency bucket struct
113
111
*/
@@ -129,25 +127,32 @@ typedef struct as_metrics_writer_s {
129
127
130
128
uint64_t size ;
131
129
132
- int32_t latency_columns ;
130
+ uint32_t latency_columns ;
133
131
134
- int32_t latency_shift ;
132
+ uint32_t latency_shift ;
135
133
136
134
const char * report_directory ;
137
135
} as_metrics_writer ;
138
136
139
- /**
140
- * Format time into UTC string
141
- */
142
- const char *
143
- utc_time_str (time_t t );
144
-
145
137
/**
146
138
* Initalize metrics policy
147
139
*/
148
- void
140
+ AS_EXTERN void
149
141
as_metrics_policy_init (as_policy_metrics * policy );
150
142
143
+ static inline void
144
+ as_metrics_set_listeners (
145
+ as_policy_metrics * policy , as_metrics_enable_listener enable ,
146
+ as_metrics_disable_listener disable , as_metrics_node_close_listener node_close ,
147
+ as_metrics_snapshot_listener snapshot
148
+ )
149
+ {
150
+ policy -> metrics_listeners .enable_listener = enable ;
151
+ policy -> metrics_listeners .disable_listener = disable ;
152
+ policy -> metrics_listeners .node_close_listener = node_close ;
153
+ policy -> metrics_listeners .snapshot_listener = snapshot ;
154
+ }
155
+
151
156
/**
152
157
* Convert latency_type to string version for printing to the output file
153
158
*/
@@ -158,7 +163,7 @@ as_latency_type_to_string(as_latency_type type);
158
163
* Initalize latency bucket struct
159
164
*/
160
165
void
161
- as_metrics_latency_buckets_init (as_latency_buckets * latency_buckets , int32_t latency_columns , int32_t latency_shift );
166
+ as_metrics_latency_buckets_init (as_latency_buckets * latency_buckets , uint32_t latency_columns , uint32_t latency_shift );
162
167
163
168
/**
164
169
* Return cumulative count of a bucket.
@@ -181,72 +186,21 @@ as_metrics_get_index(as_latency_buckets* latency_buckets, uint64_t elapsed_nanos
181
186
/**
182
187
* Initalize node metrics struct
183
188
*/
184
- void
185
- as_node_metrics_init (as_node_metrics * node_metrics , const as_policy_metrics * policy );
189
+ as_node_metrics *
190
+ as_node_metrics_init (uint32_t latency_columns , uint32_t latency_shift );
186
191
187
192
/**
188
193
* Add latency to corresponding bucket type
189
194
*/
190
195
void
191
196
as_metrics_add_latency (as_node_metrics * node_metrics , as_latency_type latency_type , uint64_t elapsed );
192
197
193
- /**
194
- * Initalize metrics listener struct
195
- */
196
- void
197
- as_metrics_listeners_init (as_metrics_listeners * listeners );
198
-
199
- /**
200
- * Open output metrics file and write header
201
- */
202
- as_status
203
- as_metrics_open_writer (as_metrics_writer * mw , as_error * err );
204
-
205
198
/**
206
199
* Calculate CPU and memory usage
207
200
*/
208
201
void
209
202
as_metrics_process_cpu_load_mem_usage (uint32_t * cpu_usage , uint32_t * mem );
210
203
211
- struct as_cluster_s ;
212
- /**
213
- * Write cluster information to the metrics output file
214
- */
215
- as_status
216
- as_metrics_write_cluster (as_error * err , as_metrics_writer * mw , struct as_cluster_s * cluster );
217
-
218
- struct as_node_s ;
219
- /**
220
- * Write node information to the metrics output file
221
- */
222
- void
223
- as_metrics_write_node (as_metrics_writer * mw , struct as_node_s * node_stats );
224
-
225
- struct as_conn_stats_s ;
226
- /**
227
- * Write connection information to the metrics output file
228
- */
229
- void
230
- as_metrics_write_conn (as_metrics_writer * mw , const struct as_conn_stats_s * conn_stats );
231
-
232
- /**
233
- * Calculate sync conn stats data
234
- */
235
- void
236
- as_metrics_get_node_sync_conn_stats (const struct as_node_s * node , struct as_conn_stats_s * async );
237
-
238
- /**
239
- * Calculate async conn stats data
240
- */
241
- void
242
- as_metrics_get_node_async_conn_stats (const struct as_node_s * node , struct as_conn_stats_s * sync );
243
-
244
- /**
245
- * Write line to the metrics output file
246
- */
247
- as_status
248
- as_metrics_write_line (as_metrics_writer * mw , as_error * err );
249
-
250
204
#if defined(__linux__ )
251
205
/**
252
206
* Gets memory and CPU usage information from proc/stat
0 commit comments