summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2017-11-26 21:01:14 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2017-11-26 21:01:14 +0000
commit6f13976adf5b33c00e2b36a7822be5fe7903f136 (patch)
tree45a74112f5120694f0f63737cd7b7ec584313e42
parent7ae80340d621d6add95f6c7d9e5e7a0e921f0b42 (diff)
downloadskabus-6f13976adf5b33c00e2b36a7822be5fe7903f136.tar.xz
clang doesn't like gensetb -> rewrite using genset
-rw-r--r--src/rpc/skabus-rpcd.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/rpc/skabus-rpcd.c b/src/rpc/skabus-rpcd.c
index b9398cc..26692f2 100644
--- a/src/rpc/skabus-rpcd.c
+++ b/src/rpc/skabus-rpcd.c
@@ -448,12 +448,14 @@ int main (int argc, char const *const *argv, char const *const *envp)
}
{
- GENSETB_TYPE(client_t, 1+maxconn) blob ;
+ genset clientinfo ;
+ client_t clientstorage[1+maxconn] ;
+ uint32_t clientfreelist[1+maxconn] ;
iopause_fd x[2 + (maxconn << 1)] ;
- GENSETB_init(client_t, &blob, 1+maxconn) ;
- sentinel = gensetb_new(&blob) ;
- blob.storage[sentinel].next = sentinel ;
- clients = &blob.info ;
+ GENSET_init(&clientinfo, client_t, clientstorage, clientfreelist, 1+maxconn) ;
+ sentinel = genset_new(&clientinfo) ;
+ clientstorage[sentinel].next = sentinel ;
+ clients = &clientinfo ;
x[0].fd = spfd ; x[0].events = IOPAUSE_READ ;
x[1].fd = 0 ;
@@ -468,13 +470,13 @@ int main (int argc, char const *const *argv, char const *const *envp)
{
tain_t deadline ;
int r = 1 ;
- uint32_t i = blob.storage[sentinel].next, j = 2 ;
+ uint32_t i = clientstorage[sentinel].next, j = 2 ;
query_get_mindeadline(&deadline) ;
if (!cont && tain_less(&lameduckdeadline, &deadline)) deadline = lameduckdeadline ;
if (queries_pending()) r = 0 ;
x[1].events = (cont && (numconn < maxconn)) ? IOPAUSE_READ : 0 ;
- for (; i != sentinel ; i = blob.storage[i].next)
+ for (; i != sentinel ; i = clientstorage[i].next)
if (client_prepare_iopause(i, &deadline, x, &j, cont)) r = 0 ;
if (!cont && r) break ;
@@ -494,8 +496,8 @@ int main (int argc, char const *const *argv, char const *const *envp)
query_fail(i, ETIMEDOUT) ;
}
errno = ETIMEDOUT ;
- for (i = blob.storage[sentinel].next, j = sentinel ; i != sentinel ; j = i, i = blob.storage[i].next)
- if (!tain_future(&blob.storage[i].deadline)) removeclient(&i, j) ;
+ for (i = clientstorage[sentinel].next, j = sentinel ; i != sentinel ; j = i, i = clientstorage[i].next)
+ if (!tain_future(&clientstorage[i].deadline)) removeclient(&i, j) ;
continue ;
}
@@ -507,10 +509,10 @@ int main (int argc, char const *const *argv, char const *const *envp)
/* Event */
- for (j = sentinel, i = blob.storage[sentinel].next ; i != sentinel ; j = i, i = blob.storage[i].next)
+ for (j = sentinel, i = clientstorage[sentinel].next ; i != sentinel ; j = i, i = clientstorage[i].next)
if (!client_flush(i, x)) removeclient(&i, j) ;
- for (j = sentinel, i = blob.storage[sentinel].next ; i != sentinel ; j = i, i = blob.storage[i].next)
+ for (j = sentinel, i = clientstorage[sentinel].next ; i != sentinel ; j = i, i = clientstorage[i].next)
switch(client_read(i, x))
{
case 0 : errno = 0 ;