00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _METRICS_COLLECTOR_WRITER_H_
00009 #define _METRICS_COLLECTOR_WRITER_H_
00010
00011 #include "tape.h"
00012 #include "metrics_collector.h"
00013 #include <json/json.h>
00014
00015 #include <iostream>
00016 #include <fstream>
00017 #include <cstring>
00018 #include <string.h>
00019 using namespace std;
00020
00021 EXPORT void new_metrics_collector_writer(MODULE *);
00022
00023 #ifdef __cplusplus
00024
00025 class metrics_collector_writer{
00026 public:
00027 static metrics_collector_writer *defaults;
00028 static CLASS *oclass, *pclass;
00029
00030 metrics_collector_writer(MODULE *);
00031 int create();
00032 int init(OBJECT *);
00033 int isa(char *);
00034 TIMESTAMP postsync(TIMESTAMP, TIMESTAMP);
00035
00036 int commit(TIMESTAMP);
00037
00038 public:
00039 char256 filename;
00040 double interval_length_dbl;
00041
00042 private:
00043
00044 int write_line(TIMESTAMP);
00045
00046 private:
00047
00048 Json::Value metrics_writer_billing_meters;
00049 Json::Value metrics_writer_houses;
00050 Json::Value metrics_writer_inverters;
00051 Json::Value metrics_writer_feeder_information;
00052 Json::Value metrics_writer_capacitors;
00053 Json::Value metrics_writer_regulators;
00054
00055 Json::Value ary_billing_meters;
00056 Json::Value ary_houses;
00057 Json::Value ary_inverters;
00058 Json::Value ary_feeders;
00059 Json::Value ary_capacitors;
00060 Json::Value ary_regulators;
00061
00062 char256 filename_billing_meter;
00063 char256 filename_inverter;
00064 char256 filename_house;
00065 char256 filename_substation;
00066 char256 filename_capacitor;
00067 char256 filename_regulator;
00068
00069 TIMESTAMP startTime;
00070 TIMESTAMP final_write;
00071 TIMESTAMP next_write;
00072 TIMESTAMP last_write;
00073 bool interval_write;
00074
00075 char* parent_string;
00076
00077 FINDLIST *metrics_collectors;
00078
00079 int interval_length;
00080 };
00081
00082 #endif // C++
00083
00084 #endif // _METRICS_COLLECTOR_WRITER_H_
00085
00086