#ifndef _TFE_FIELDSTAT_METRIC_H
#define _TFE_FIELDSTAT_METRIC_H

#ifdef __cpluscplus
extern "C"
{
#endif

#include <tfe_utils.h>
#include <MESA/fieldstat.h>

enum metric_columns_index
{
	COLUMN_HIT_COUNT = 0,
	COLUMN_IN_BYTES,
	COLUMN_OUT_BYTES,
	COLUMN_IN_PKTS,
	COLUMN_OUT_PKTS,
	COLUMN_MAX
};

enum metric_tags_index
{
	TAG_VSYS_ID = 0,
	TAG_RULE_ID,
    TAG_PINNING_STATUS,
	TAG_ACTION,
    TAG_SUB_ACTION,
	TAG_MAX
};

struct tfe_fieldstat_metric_t
{
    int table_id;
    int max_thread;
    struct fieldstat_tag **tags;
    unsigned int column_array[COLUMN_MAX];
    struct fieldstat_dynamic_instance *instance;
};

int tfe_fieldstat_metric_incrby(struct tfe_fieldstat_metric_t *fieldstat, unsigned int column_id, long long value, const struct fieldstat_tag tags[], int thread_id);
struct tfe_fieldstat_metric_t *tfe_fieldstat_metric_create(char *telegraf_ip, int telegraf_port, char *app_name, int cycle, int max_thread, void *local_logger);
void tfe_fieldstat_metric_destroy(struct tfe_fieldstat_metric_t *fieldstat);

#ifdef __cpluscplus
}
#endif

#endif

