docs
parent
1feaa97638
commit
085a3e93c9
|
@ -83,7 +83,7 @@ To build everything, including the webserver, try:
|
||||||
|
|
||||||
```
|
```
|
||||||
apt-get install protobuf-compiler libh2o-dev libcurl4-openssl-dev libssl-dev libprotobuf-dev \
|
apt-get install protobuf-compiler libh2o-dev libcurl4-openssl-dev libssl-dev libprotobuf-dev \
|
||||||
libh2o-evloop-dev libwslay-dev libncurses5-dev libeigen3-dev libzstd-dev
|
libh2o-evloop-dev libwslay-dev libncurses5-dev libeigen3-dev libzstd-dev g++
|
||||||
git clone https://github.com/ahupowerdns/galmon.git --recursive
|
git clone https://github.com/ahupowerdns/galmon.git --recursive
|
||||||
cd galmon
|
cd galmon
|
||||||
make
|
make
|
||||||
|
|
45
reporter.cc
45
reporter.cc
|
@ -509,6 +509,48 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////
|
||||||
|
string dishesQuery = "select iod,sv from \"ephemeris-actual\" where "+period+" and sigid='"+to_string(sigid)+"' and gnssid='"+to_string(gnssid)+"' and iod < 128";
|
||||||
|
cout<<"dishesquery: "<<dishesQuery<<endl;
|
||||||
|
res = mc.getURL(url + mc.urlEncode(dishesQuery));
|
||||||
|
cout<<res<<endl;
|
||||||
|
j = nlohmann::json::parse(res);
|
||||||
|
map<time_t, set<int>> dishcount;
|
||||||
|
set<int> totsvs;
|
||||||
|
for(const auto& sv : j["results"][0]["series"]) {
|
||||||
|
for(const auto& v : sv["values"]) {
|
||||||
|
try {
|
||||||
|
int sv = (unsigned int)std::stoi((string)v[2]);
|
||||||
|
int t = (int)v[0];
|
||||||
|
// t &= (~31);
|
||||||
|
dishcount[t].insert(sv);
|
||||||
|
totsvs.insert(sv);
|
||||||
|
}
|
||||||
|
catch(exception& e) {
|
||||||
|
cerr<<"error: "<<e.what()<<endl;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
map<time_t, int> maxcounts;
|
||||||
|
for(const auto& dc : dishcount) {
|
||||||
|
auto& bin = maxcounts[dc.first - (dc.first % 3600)];
|
||||||
|
if(bin < dc.second.size())
|
||||||
|
bin = dc.second.size();
|
||||||
|
cout << dc.first<<" "<<humanTimeShort(dc.first) <<", " << fmt::sprintf("%2d", dc.second.size())<<": ";
|
||||||
|
for(const auto& n : totsvs) {
|
||||||
|
if(dc.second.count(n))
|
||||||
|
cout<<fmt::sprintf("%2d ", n);
|
||||||
|
else
|
||||||
|
cout<<" ";
|
||||||
|
}
|
||||||
|
cout<<"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
ofstream hrcounts("hrcounts.csv");
|
||||||
|
hrcounts<<"timestamp,dishcount\n";
|
||||||
|
for(const auto& mc: maxcounts)
|
||||||
|
hrcounts<<mc.first<<","<<mc.second<<"\n";
|
||||||
|
|
||||||
/////////////////////
|
/////////////////////
|
||||||
|
|
||||||
|
@ -643,6 +685,9 @@ int main(int argc, char **argv)
|
||||||
cout<<endl;
|
cout<<endl;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cout<<"------------------------------------------------------------------------------------------"<<endl;
|
cout<<"------------------------------------------------------------------------------------------"<<endl;
|
||||||
cout<<fmt::sprintf("Tot: %6.2f%% unobserved, %6.2f%% unhealthy, %6.2f%% healthy, %6.2f%% testing, %6.2f%% napa, %6.2f%% ripe, %6.2f%% expired",
|
cout<<fmt::sprintf("Tot: %6.2f%% unobserved, %6.2f%% unhealthy, %6.2f%% healthy, %6.2f%% testing, %6.2f%% napa, %6.2f%% ripe, %6.2f%% expired",
|
||||||
100.0*(totunobserved)/maxintervals/g_stats.size(),
|
100.0*(totunobserved)/maxintervals/g_stats.size(),
|
||||||
|
|
|
@ -181,6 +181,7 @@ try
|
||||||
for(;;) {
|
for(;;) {
|
||||||
double to=1000;
|
double to=1000;
|
||||||
auto res = getSEPMessage(srcfd, &to);
|
auto res = getSEPMessage(srcfd, &to);
|
||||||
|
cerr<<res.first.getID()<<" - " <<res.first.getIDBare() << endl;
|
||||||
if(res.first.getID() == 4023) { // I/NAV
|
if(res.first.getID() == 4023) { // I/NAV
|
||||||
auto str = res.first.getPayload();
|
auto str = res.first.getPayload();
|
||||||
struct SEPInav
|
struct SEPInav
|
||||||
|
|
|
@ -149,11 +149,12 @@ void ZStdReader::worker()
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
input.pos=0;
|
input.pos=0;
|
||||||
input.size=read(d_sourcefd, (char*)input.src, inputcapacity);
|
int ret = read(d_sourcefd, (char*)input.src, inputcapacity);
|
||||||
if(input.size <= 0) {
|
if(ret <= 0) {
|
||||||
cerr<<"Got EOF on input fd "<<d_sourcefd<<", terminating thread"<<endl;
|
cerr<<"Got EOF on input fd "<<d_sourcefd<<", terminating thread"<<endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
input.size = ret; // this is unsigned, so we need 'ret' to see the error
|
||||||
while(input.pos != input.size) {
|
while(input.pos != input.size) {
|
||||||
output.pos=0;
|
output.pos=0;
|
||||||
output.size=outputcapacity;
|
output.size=outputcapacity;
|
||||||
|
|
Loading…
Reference in New Issue