diff options
Diffstat (limited to 'src/pmlogrewrite/logger.h')
-rw-r--r-- | src/pmlogrewrite/logger.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/src/pmlogrewrite/logger.h b/src/pmlogrewrite/logger.h new file mode 100644 index 0000000..36c9712 --- /dev/null +++ b/src/pmlogrewrite/logger.h @@ -0,0 +1,178 @@ +/* + * Copyright (c) 2013 Red Hat. + * Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * common data structures for pmlogextract + */ + +#ifndef _LOGGER_H +#define _LOGGER_H + +extern int sflag; /* -s from command line */ +extern int vflag; /* -v from command line */ +extern int wflag; /* -w from command line */ + +/* + * Global rewrite specifications + */ +typedef struct { + int flags; /* GLOBAL_* flags */ + struct timeval time; /* timestamp shift */ + char hostname[PM_LOG_MAXHOSTLEN]; + char tz[PM_TZ_MAXLEN]; +} global_t; + +/* values for global_t flags */ +#define GLOBAL_CHANGE_TIME 1 +#define GLOBAL_CHANGE_HOSTNAME 2 +#define GLOBAL_CHANGE_TZ 4 + +extern global_t global; + +/* + * Rewrite specifications for an instance domain + */ +typedef struct indomspec { + struct indomspec *i_next; + int indom_flags; /* INDOM_* flags */ + int *inst_flags; /* INST_* flags */ + pmInDom old_indom; + pmInDom new_indom; /* old_indom if no change */ + int numinst; + int *old_inst; /* filled from pmGetInDomArchive() */ + char **old_iname; /* filled from pmGetInDomArchive() */ + int *new_inst; + char **new_iname; +} indomspec_t; + +/* values for indomspec_t indom_flags */ +#define INDOM_ADD 1 +#define INDOM_DELETE 2 +#define INDOM_DUPLICATE 4 +/* values for indomspec_t inst_flags[] */ +#define INST_CHANGE_INST 16 +#define INST_CHANGE_INAME 32 +#define INST_DELETE 64 + +extern indomspec_t *indom_root; + +/* + * Rewrite specifications for a metric + */ +typedef struct metricspec { + struct metricspec *m_next; + int flags; /* METRIC_* flags */ + int output; /* OUTPUT_* values */ + int one_inst; /* for OUTPUT_ONE INST */ + char *one_name; /* for OUTPUT_ONE NAME */ + char *old_name; + char *new_name; + pmDesc old_desc; + pmDesc new_desc; + indomspec_t *ip; /* for instance id changes */ +} metricspec_t; + +/* values for metricspec_t flags[] */ +#define METRIC_CHANGE_PMID 1 +#define METRIC_CHANGE_NAME 2 +#define METRIC_CHANGE_TYPE 4 +#define METRIC_CHANGE_INDOM 8 +#define METRIC_CHANGE_SEM 16 +#define METRIC_CHANGE_UNITS 32 +#define METRIC_DELETE 64 +#define METRIC_RESCALE 128 + +/* values for output when indom (numval >= 1) => PM_INDOM_NULL (numval = 1) */ +#define OUTPUT_ALL 0 +#define OUTPUT_FIRST 1 +#define OUTPUT_LAST 2 +#define OUTPUT_ONE 3 +#define OUTPUT_MIN 4 +#define OUTPUT_MAX 5 +#define OUTPUT_SUM 6 +#define OUTPUT_AVG 7 + +extern metricspec_t *metric_root; + +/* + * Input archive control + */ +typedef struct { + int ctx; + __pmContext *ctxp; + char *name; + pmLogLabel label; + __pmPDU *metarec; + __pmPDU *logrec; + pmResult *rp; + int mark; /* need EOL marker */ +} inarch_t; + +extern inarch_t inarch; /* input archive */ + +/* + * Output archive control + */ +typedef struct { + char *name; /* base name of output archive */ + __pmLogCtl logctl; /* libpcp control */ +} outarch_t; + +extern outarch_t outarch; /* output archive */ + +/* size of a string length field */ +#define LENSIZE 4 + +/* generic error message buffer */ +extern char mess[256]; + +/* yylex() gets intput from here ... */ +extern char *configfile; +extern FILE *fconfig; +extern int lineno; +extern FILE *yyin; + +extern void yyerror(char *); +extern void yywarn(char *); +extern void yysemantic(char *); +extern int yylex(void); +extern int yyparse(void); + +#define W_START 1 +#define W_NEXT 2 +#define W_NONE 3 + +extern int _pmLogGet(__pmLogCtl *, int, __pmPDU **); +extern int _pmLogPut(FILE *, __pmPDU *); +extern int _pmLogRename(const char *, const char *); +extern int _pmLogRemove(const char *); +extern pmUnits ntoh_pmUnits(pmUnits); +#define ntoh_pmInDom(indom) ntohl(indom) +#define ntoh_pmID(pmid) ntohl(pmid) + +extern metricspec_t *start_metric(pmID); +extern indomspec_t *start_indom(pmInDom); +extern int change_inst_by_inst(pmInDom, int, int); +extern int change_inst_by_name(pmInDom, char *, char *); +extern int inst_name_eq(const char *, const char *); + +extern char *SemStr(int); +extern void newvolume(int); + +extern void do_desc(void); +extern void do_indom(void); +extern void do_result(void); + +extern void abandon(void); + +#endif /* _LOGGER_H */ |