#include "influxpush.hh" #include "minicurl.hh" using namespace std; InfluxPusher::InfluxPusher(std::string_view dbname) : d_dbname(dbname) { if(dbname=="null") { d_mute = true; cout<<"Not sending data to influxdb"<>& values, double t, std::optional satid) { if(d_mute) return; if(t > 2200000000 || t < 0) { cerr<<"Unable to store item "<gnss)+ +",sv=" +to_string(satid->sv)+",sigid="+to_string(satid->sigid); } buffer+= " "; bool lefirst=true; for(const auto& v : values) { if(!lefirst) { buffer +=","; } lefirst=false; buffer += string(v.first) + "="+to_string(v.second); } buffer += " " + to_string((uint64_t)(t* 1000000000))+"\n"; queueValue(buffer); } void InfluxPusher::addValue(const SatID& id, string_view name, const initializer_list>& values, double t, std::optional src) { if(d_mute) return; if(t > 2200000000 || t < 0) { cerr<<"Unable to store item "< 10000 || (time(0) - d_lastsent) > 10) { set buffer; buffer.swap(d_buffer); // thread t([buffer,this]() { if(!d_mute) doSend(buffer); // }); // t.detach(); d_lastsent=time(0); } } void InfluxPusher::doSend(const set& buffer) { MiniCurl mc; MiniCurl::MiniCurlHeaders mch; if(!buffer.empty()) { string newout; for(const auto& nl: buffer) newout.append(nl); /* ofstream infl; infl.open ("infl.txt", std::ofstream::out | std::ofstream::app); infl << newout; */ mc.postURL("http://127.0.0.1:8086/write?db="+d_dbname, newout, mch); } } InfluxPusher::~InfluxPusher() { if(d_dbname != "null") doSend(d_buffer); }