64 lines
1.6 KiB
C
64 lines
1.6 KiB
C
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "base.h"
|
|
#include "joblist.h"
|
|
#include "log.h"
|
|
|
|
int joblist_append(server *srv, connection *con) {
|
|
if (con->in_joblist) return 0;
|
|
|
|
if (srv->joblist->size == 0) {
|
|
srv->joblist->size = 16;
|
|
srv->joblist->ptr = malloc(sizeof(*srv->joblist->ptr) * srv->joblist->size);
|
|
} else if (srv->joblist->used == srv->joblist->size) {
|
|
srv->joblist->size += 16;
|
|
srv->joblist->ptr = realloc(srv->joblist->ptr, sizeof(*srv->joblist->ptr) * srv->joblist->size);
|
|
}
|
|
|
|
srv->joblist->ptr[srv->joblist->used++] = con;
|
|
|
|
return 0;
|
|
}
|
|
|
|
void joblist_free(server *srv, connections *joblist) {
|
|
UNUSED(srv);
|
|
|
|
free(joblist->ptr);
|
|
free(joblist);
|
|
}
|
|
|
|
connection *fdwaitqueue_unshift(server *srv, connections *fdwaitqueue) {
|
|
connection *con;
|
|
UNUSED(srv);
|
|
|
|
|
|
if (fdwaitqueue->used == 0) return NULL;
|
|
|
|
con = fdwaitqueue->ptr[0];
|
|
|
|
memmove(fdwaitqueue->ptr, &(fdwaitqueue->ptr[1]), --fdwaitqueue->used * sizeof(*(fdwaitqueue->ptr)));
|
|
|
|
return con;
|
|
}
|
|
|
|
int fdwaitqueue_append(server *srv, connection *con) {
|
|
if (srv->fdwaitqueue->size == 0) {
|
|
srv->fdwaitqueue->size = 16;
|
|
srv->fdwaitqueue->ptr = malloc(sizeof(*(srv->fdwaitqueue->ptr)) * srv->fdwaitqueue->size);
|
|
} else if (srv->fdwaitqueue->used == srv->fdwaitqueue->size) {
|
|
srv->fdwaitqueue->size += 16;
|
|
srv->fdwaitqueue->ptr = realloc(srv->fdwaitqueue->ptr, sizeof(*(srv->fdwaitqueue->ptr)) * srv->fdwaitqueue->size);
|
|
}
|
|
|
|
srv->fdwaitqueue->ptr[srv->fdwaitqueue->used++] = con;
|
|
|
|
return 0;
|
|
}
|
|
|
|
void fdwaitqueue_free(server *srv, connections *fdwaitqueue) {
|
|
UNUSED(srv);
|
|
free(fdwaitqueue->ptr);
|
|
free(fdwaitqueue);
|
|
}
|