bind timestamp with enc
This commit is contained in:
45
main.c
45
main.c
@@ -32,10 +32,16 @@ struct memory
|
|||||||
size_t size;
|
size_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct enc
|
||||||
|
{
|
||||||
|
char *enc;
|
||||||
|
long long timestamp;
|
||||||
|
};
|
||||||
|
|
||||||
CURLcode curl_get(const char *, struct memory *);
|
CURLcode curl_get(const char *, struct memory *);
|
||||||
long long current_timestamp();
|
long long current_timestamp();
|
||||||
size_t cb(char *, size_t, size_t, void *);
|
size_t cb(char *, size_t, size_t, void *);
|
||||||
char *get_enc();
|
struct enc get_enc();
|
||||||
void parise(void *);
|
void parise(void *);
|
||||||
void exit_handler();
|
void exit_handler();
|
||||||
|
|
||||||
@@ -135,26 +141,29 @@ size_t cb(char *data, size_t size, size_t nmemb, void *clientp)
|
|||||||
return realsize;
|
return realsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *get_enc()
|
struct enc get_enc()
|
||||||
{
|
{
|
||||||
char url[200];
|
char url[200];
|
||||||
char *ret = NULL;
|
struct enc ret = {0};
|
||||||
struct memory data = {0};
|
struct memory data = {0};
|
||||||
const cJSON *enc = NULL;
|
const cJSON *json = NULL;
|
||||||
|
cJSON *data_json = NULL;
|
||||||
|
|
||||||
REGEN_ENC_URL_F(url, current_timestamp());
|
ret.timestamp = current_timestamp();
|
||||||
|
|
||||||
|
REGEN_ENC_URL_F(url, ret.timestamp);
|
||||||
|
|
||||||
if (curl_get(url, &data) != CURLE_OK)
|
if (curl_get(url, &data) != CURLE_OK)
|
||||||
return NULL;
|
return ret;
|
||||||
|
|
||||||
DPRINT("%s\n", data.response);
|
DPRINT("%s\n", data.response);
|
||||||
|
|
||||||
cJSON *data_json = cJSON_Parse(data.response);
|
data_json = cJSON_Parse(data.response);
|
||||||
enc = cJSON_GetObjectItemCaseSensitive(data_json, "enc");
|
json = cJSON_GetObjectItemCaseSensitive(data_json, "enc");
|
||||||
|
|
||||||
const size_t s = strlen(enc->valuestring);
|
const size_t s = strlen(json->valuestring);
|
||||||
ret = malloc(s + 1);
|
ret.enc = malloc(s + 1);
|
||||||
memcpy(ret, enc->valuestring, s + 1);
|
memcpy(ret.enc, json->valuestring, s + 1);
|
||||||
|
|
||||||
free(data.response);
|
free(data.response);
|
||||||
cJSON_Delete(data_json);
|
cJSON_Delete(data_json);
|
||||||
@@ -170,17 +179,17 @@ void parise(void *arg)
|
|||||||
{
|
{
|
||||||
char url[200];
|
char url[200];
|
||||||
struct memory json_c = {0};
|
struct memory json_c = {0};
|
||||||
const char *enc = NULL;
|
struct enc enc;
|
||||||
const cJSON *result = NULL;
|
const cJSON *result = NULL;
|
||||||
const cJSON *msg = NULL;
|
const cJSON *msg = NULL;
|
||||||
const cJSON *data = NULL;
|
const cJSON *data = NULL;
|
||||||
const cJSON *errorMsg = NULL;
|
const cJSON *errorMsg = NULL;
|
||||||
cJSON *json = NULL;
|
cJSON *json = NULL;
|
||||||
|
|
||||||
if ((enc = get_enc()) == NULL)
|
if ((enc = get_enc()).enc == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
REGEN_URL_F(url, enc, current_timestamp());
|
REGEN_URL_F(url, enc.enc, enc.timestamp);
|
||||||
curl_get(url, &json_c);
|
curl_get(url, &json_c);
|
||||||
|
|
||||||
json = cJSON_Parse(json_c.response);
|
json = cJSON_Parse(json_c.response);
|
||||||
@@ -192,15 +201,15 @@ void parise(void *arg)
|
|||||||
if (result->valueint == 1)
|
if (result->valueint == 1)
|
||||||
printf("\rT%d\t%s\t%d", idx, msg->valuestring, data->valueint);
|
printf("\rT%d\t%s\t%d", idx, msg->valuestring, data->valueint);
|
||||||
else
|
else
|
||||||
printf("\rT%d\t%s", idx, errorMsg->valuestring);
|
fprintf(stderr, "\rT%d\t%s", idx, errorMsg->valuestring);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
free((void *)enc);
|
free(enc.enc);
|
||||||
free(json_c.response);
|
free(json_c.response);
|
||||||
|
|
||||||
cJSON_Delete(json);
|
cJSON_Delete(json);
|
||||||
}
|
}
|
||||||
fprintf(stderr, "\rSignal Received: exit. T%d exiting\n", idx);
|
|
||||||
|
printf("\rSignal Received: exit. T%d exiting\n", idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void exit_handler()
|
void exit_handler()
|
||||||
|
|||||||
Reference in New Issue
Block a user