respondd: renamed queue -> schedule
This commit is contained in:
parent
be55c1926f
commit
78243797cf
|
@ -49,7 +49,7 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
|
||||||
#define QUEUE_RING_LEN 8
|
#define SCHEDULE_LEN 8
|
||||||
#define REQUEST_MAXLEN 256
|
#define REQUEST_MAXLEN 256
|
||||||
|
|
||||||
struct provider_list {
|
struct provider_list {
|
||||||
|
@ -77,7 +77,7 @@ struct request_task {
|
||||||
char request[REQUEST_MAXLEN];
|
char request[REQUEST_MAXLEN];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct request_queue {
|
struct request_schedule {
|
||||||
int length;
|
int length;
|
||||||
struct request_task *list_head;
|
struct request_task *list_head;
|
||||||
};
|
};
|
||||||
|
@ -184,12 +184,11 @@ static const struct respondd_provider_info * get_providers(const char *filename)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool queue_push_request(struct request_queue *q, char* req,
|
bool schedule_push_request(struct request_schedule *q, char* req,
|
||||||
struct sockaddr *addr, socklen_t addrlen,
|
struct sockaddr *addr, socklen_t addrlen,
|
||||||
int64_t scheduled_time) {
|
int64_t scheduled_time) {
|
||||||
// TODO: rename QUEUE_RING_LEN
|
if (q->length >= SCHEDULE_LEN)
|
||||||
if (q->length >= QUEUE_RING_LEN)
|
// schedule is full
|
||||||
// queue is full
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
struct request_task *new_task = malloc(sizeof(struct request_task));
|
struct request_task *new_task = malloc(sizeof(struct request_task));
|
||||||
|
@ -217,9 +216,9 @@ bool queue_push_request(struct request_queue *q, char* req,
|
||||||
}
|
}
|
||||||
|
|
||||||
// the returned task is already set as processed
|
// the returned task is already set as processed
|
||||||
struct request_task * queue_pop_request(struct request_queue *q) {
|
struct request_task * schedule_pop_request(struct request_schedule *q) {
|
||||||
if (!q->list_head)
|
if (!q->list_head)
|
||||||
// queue is empty
|
// schedule is empty
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (q->list_head->scheduled_time > now) {
|
if (q->list_head->scheduled_time > now) {
|
||||||
|
@ -388,7 +387,7 @@ static struct json_object * handle_request(char *request, bool *compress) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// the return value indicates whether there was a request
|
// the return value indicates whether there was a request
|
||||||
static bool accept_request(struct request_queue *queue, int sock) {
|
static bool accept_request(struct request_schedule *schedule, int sock) {
|
||||||
char input[REQUEST_MAXLEN];
|
char input[REQUEST_MAXLEN];
|
||||||
ssize_t input_bytes;
|
ssize_t input_bytes;
|
||||||
struct sockaddr_in6 addr;
|
struct sockaddr_in6 addr;
|
||||||
|
@ -407,8 +406,8 @@ static bool accept_request(struct request_queue *queue, int sock) {
|
||||||
|
|
||||||
input[input_bytes] = 0;
|
input[input_bytes] = 0;
|
||||||
|
|
||||||
// TODO: only multicast requests should be queued
|
// TODO: only multicast requests should be scheduled in future
|
||||||
queue_push_request(queue, input, (struct sockaddr *)&addr, addrlen, now + 5000);
|
schedule_push_request(schedule, input, (struct sockaddr *)&addr, addrlen, now + 5000);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,8 +442,8 @@ void send_response(int sock, struct json_object *result, bool compress,
|
||||||
json_object_put(result);
|
json_object_put(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
void serve_request(struct request_queue *queue, int sock) {
|
void serve_request(struct request_schedule *schedule, int sock) {
|
||||||
struct request_task* task = queue_pop_request(queue);
|
struct request_task* task = schedule_pop_request(schedule);
|
||||||
|
|
||||||
if (task == NULL)
|
if (task == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -548,13 +547,13 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
load_providers();
|
load_providers();
|
||||||
|
|
||||||
struct request_queue queue = {};
|
struct request_schedule schedule = {};
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
update_time();
|
update_time();
|
||||||
// TODO: adjust timeout, remove polling
|
// TODO: adjust timeout, remove polling
|
||||||
accept_request(&queue, sock);
|
accept_request(&schedule, sock);
|
||||||
serve_request(&queue, sock);
|
serve_request(&schedule, sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
Loading…
Reference in New Issue