metrics_collector.h
Metrics Collector source.
- Author
Sifli software development team
Defines
-
MC_MAX_DATA_LEN
Typedefs
-
typedef enum mc_period_tag mc_period_t
-
typedef enum mc_err_tag mc_err_t
-
typedef void (*mc_collector_callback_t)(void *user_data)
collector callback type
- Param user_data:
[in] user data
-
typedef struct mc_collector_tag mc_collector_t
-
typedef bool (*mc_raw_metrics_read_callback_t)(void *data, uint32_t data_len, uint32_t time)
raw metrics read callback type
- Param data:
[in] point to read data, no need to free by user
- Param data_len:
[in] data length in byte
- Param time:
[in] time in second
- Retval true:
interrupt read, false: continue read
-
typedef bool (*mc_metrics_read_callback_t)(uint16_t id, uint8_t core, uint16_t data_len, uint32_t time, void *data)
metrics read callback type
- Param id:
[in] id
- Param core:
[in] core id, CORE_ID_HCPU
- Param data_len:
[in] data length in byte
- Param time:
[in] time in second
- Param data:
[in] point to read data, no need to free by user
- Retval true:
interrupt read, false: continue read
-
typedef bool (*mc_backend_iter_cb_t)(void *data, uint32_t data_len, void *arg)
Enums
Functions
-
mc_err_t mc_register_collector(mc_collector_t *collector)
Register metrics collector
The memory of param collector will still be used after the invocation, until mc_deregister_collector is called. So the memory should be available within this time.
- 参数:
collector – [in] collector
- 返回:
result
-
mc_err_t mc_deregister_collector(mc_collector_t *collector)
Deregister metrics collector
After the invocation, the memory of param collector will not be used any more.
- 参数:
collector – [in] collector
- 返回:
result
-
void *mc_alloc_metrics(uint16_t id, uint16_t data_len)
Allocate memory space for one metrics
data_len cannot exceed MC_MAX_DATA_LEN
- 参数:
id – [in] metrics id, it’s user defined
data_len – [in] metrics data length in byte
- 返回:
pointer to metrics data buffer, buffer size is same as data_len
-
mc_err_t mc_save_metrics(void *metrics, bool freed)
Save the metrics to storage (default db)
- 参数:
metrics – [in] the metrics allocated by mc_alloc_metrics
freed – [in] whether the metrics memory can be freed after the invocation. true: free, false: not free
- 返回:
result
-
mc_err_t mc_save_metrics_ex(mc_db_t *db, void *metrics, bool freed)
Save the metrics to specified db
- 参数:
db – [in] metrics db handle initialzed by mc_init_db
metrics – [in] the metrics allocated by mc_alloc_metrics
freed – [in] whether the metrics memory can be freed after the invocation. true: free, false: not free
- 返回:
result
-
mc_err_t mc_free_metrics(void *metrics)
Free the metrics memory allocated by mc_alloc_metrics
- 参数:
metrics – [in] the metrics allocated by mc_alloc_metrics
- 返回:
result
-
mc_err_t mc_read_raw_metrics(mc_raw_metrics_read_callback_t cb)
Read raw metrics saved in storage
The callback would be called for each metrics in the database, raw data is provided.
- 参数:
cb – [in] read callback
- 返回:
result
-
mc_err_t mc_read_metrics(mc_metrics_read_callback_t cb)
Read metrics saved in storage
The callback would be called for each metrics in the database, parsed data is provided.
- 参数:
cb – [in] read callback
- 返回:
result
-
mc_err_t mc_init_db(mc_db_t *db, const char *name, uint32_t max_size)
Initialize db
- 参数:
db – [inout] metrics db handle
name – [in] db name
max_size – [in] db size
- 返回:
result
-
mc_err_t mc_flush_ex(mc_db_t *db)
flush db
Ensure all data is written in storage instead of remaining in cache
- 参数:
db – [in] metrics db handle
- 返回:
result
-
mc_err_t mc_flush(void)
flush default db
Ensure all data is written into storage instead of remaining in cache
- 返回:
result
-
mc_err_t mc_close(void)
close default db
Same as mc_flush, plus default db is closed afterwards and no more data can be written further
- 返回:
result
-
const char *mc_get_path(void)
Get default db path with file backend
- 返回:
path
-
void *mc_backend_init(const char *name, uint32_t max_len)
-
mc_err_t mc_backend_iter(void *db, mc_backend_iter_cb_t cb, void *arg)
-
struct mc_collector_tag
Public Members
-
rt_list_t node
internal use, no need to fill by caller
-
mc_collector_callback_t callback
collector callback, woudld called according to period
-
mc_period_t period
period
-
void *user_data
user data, would be passed as argument of callback
-
rt_list_t node
-
struct mc_db_t