batch database access done
This commit is contained in:
parent
efd80926e1
commit
1403c442ca
@ -51,7 +51,7 @@ int main (void) {
|
|||||||
uint32_t diff = ringbufferGet();
|
uint32_t diff = ringbufferGet();
|
||||||
|
|
||||||
double f = 1.0 / (((double) diff) / 1000000.0);
|
double f = 1.0 / (((double) diff) / 1000000.0);
|
||||||
printf("%f\n", f);
|
// printf("%f\n", f);
|
||||||
influxAddFrequency(f);
|
influxAddFrequency(f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
src/influx.c
33
src/influx.c
@ -3,24 +3,28 @@
|
|||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|
||||||
const char INFLUXURL[] = "http://172.16.3.15:8086/write?db=smarthome2&precision=ms";
|
const char INFLUXURL[] = "http://172.16.3.15:8086/write?db=smarthome2&precision=ms";
|
||||||
|
|
||||||
#define BUFSIZE 4096
|
// #define BUFSIZE 131070
|
||||||
char buffer[BUFSIZE];
|
#define BUFSIZE 65535
|
||||||
char *bufferNextEntry = buffer;
|
char influxBuffer[BUFSIZE];
|
||||||
|
char *bufferNextEntry;
|
||||||
|
|
||||||
void influxInit() {
|
void influxInit() {
|
||||||
memset(buffer, 0, BUFSIZE);
|
memset(influxBuffer, 0, BUFSIZE);
|
||||||
bufferNextEntry = buffer;
|
bufferNextEntry = influxBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void influxSendRequest() {
|
static void influxSendRequest() {
|
||||||
|
//printf("About to send:\n");
|
||||||
|
//printf(influxBuffer);
|
||||||
CURL *curl = curl_easy_init();
|
CURL *curl = curl_easy_init();
|
||||||
if(curl) {
|
if(curl) {
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, INFLUXURL);
|
curl_easy_setopt(curl, CURLOPT_URL, INFLUXURL);
|
||||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, buffer);
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, influxBuffer);
|
||||||
CURLcode res = curl_easy_perform(curl);
|
CURLcode res = curl_easy_perform(curl);
|
||||||
if(res != CURLE_OK) {
|
if(res != CURLE_OK) {
|
||||||
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
||||||
@ -31,24 +35,25 @@ static void influxSendRequest() {
|
|||||||
|
|
||||||
void influxAddFrequency(double f) {
|
void influxAddFrequency(double f) {
|
||||||
static uint32_t entries = 0;
|
static uint32_t entries = 0;
|
||||||
char tmpBuf[128]
|
static uint32_t totalEntries = 0;
|
||||||
|
char tmpBuf[128];
|
||||||
struct timespec t;
|
struct timespec t;
|
||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &t);
|
clock_gettime(CLOCK_REALTIME, &t);
|
||||||
uint64_t tt = t.tv_sec * 1000 + t.tv_nsec / 1000000;
|
uint64_t tt = (((uint64_t)t.tv_sec) * 1000) + (((uint64_t)t.tv_nsec) / 1000000);
|
||||||
int c = sprintf(tmpBuf, "mainsfrequency freq=%f %l\n", f, tt);
|
int c = sprintf(tmpBuf, "mainsfrequency freq=%f %llu\n", f, tt);
|
||||||
entries++;
|
|
||||||
|
|
||||||
|
if ((bufferNextEntry + c + 10) > (influxBuffer + BUFSIZE)) {
|
||||||
if ((bufferNextEntry + c + 10) > (buffer + BUFSIZE)) {
|
influxSendRequest();
|
||||||
influxSendRequest()
|
|
||||||
influxInit();
|
influxInit();
|
||||||
printf("%u entries sent to database\n", entries);
|
totalEntries += entries;
|
||||||
|
printf("%u entries sent to database, in total %u\n", entries, totalEntries);
|
||||||
entries = 0;
|
entries = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(bufferNextEntry, tmpBuf, c);
|
memcpy(bufferNextEntry, tmpBuf, c);
|
||||||
bufferNextEntry += c;
|
bufferNextEntry += c;
|
||||||
|
entries++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
uint32_t buffer[BUFFER_SIZE+5];
|
uint32_t buffer[BUFFER_SIZE+5];
|
||||||
|
|
||||||
uint16_t bufferReadIdx = 0;
|
uint32_t bufferReadIdx = 0;
|
||||||
uint16_t bufferWriteIdx = 0;
|
uint32_t bufferWriteIdx = 0;
|
||||||
|
|
||||||
pthread_mutex_t eventMutex = PTHREAD_MUTEX_INITIALIZER;
|
pthread_mutex_t eventMutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
pthread_cond_t eventSignal = PTHREAD_COND_INITIALIZER;
|
pthread_cond_t eventSignal = PTHREAD_COND_INITIALIZER;
|
||||||
@ -42,11 +42,11 @@ uint32_t ringbufferGet() {
|
|||||||
pthread_mutex_unlock(&eventMutex);
|
pthread_mutex_unlock(&eventMutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
double res = buffer[bufferReadIdx];
|
double res = buffer[bufferReadIdx];
|
||||||
bufferReadIdx++;
|
bufferReadIdx++;
|
||||||
if (bufferReadIdx > BUFFER_SIZE) {
|
if (bufferReadIdx > BUFFER_SIZE) {
|
||||||
bufferReadIdx = 0;
|
bufferReadIdx = 0;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user