respondd: renamed queue -> schedule

This commit is contained in:
lemoer 2016-08-12 23:30:38 +02:00
parent be55c1926f
commit 78243797cf
1 changed files with 15 additions and 16 deletions

View File

@ -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;