diff options
| -rw-r--r-- | package/deps.mak | 7 | ||||
| -rw-r--r-- | src/include/skalibs/sassserver.h | 5 | ||||
| -rw-r--r-- | src/libunixonacid/sassserver-internal.h | 24 | ||||
| -rw-r--r-- | src/libunixonacid/sassserver.c | 57 | ||||
| -rw-r--r-- | src/libunixonacid/sassserver_init.c | 13 | ||||
| -rw-r--r-- | src/libunixonacid/sassserver_init_frompipe.c | 13 | ||||
| -rw-r--r-- | src/libunixonacid/sassserver_init_fromsocket.c | 13 | ||||
| -rw-r--r-- | src/libunixonacid/sassserver_init_structures.c | 47 |
8 files changed, 122 insertions, 57 deletions
diff --git a/package/deps.mak b/package/deps.mak index e9eb270..6dd24c9 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -77,6 +77,7 @@ src/libstddjb/djbtime-internal.h: src/include/skalibs/uint64.h src/libstddjb/fmtscan-internal.h: src/include/skalibs/fmtscan.h src/include/skalibs/uint64.h src/libunixonacid/at-internal.h: src/include/skalibs/functypes.h src/libunixonacid/sassclient-internal.h: src/include/skalibs/sassclient.h src/include/skalibs/tai.h +src/libunixonacid/sassserver-internal.h: src/include/skalibs/functypes.h src/include/skalibs/sassserver.h src/include/skalibs/tai.h src/libunixonacid/skaclient-internal.h: src/include/skalibs/kolbak.h src/include/skalibs/skaclient.h src/include/skalibs/unixmessage.h src/libdatastruct/avlnode_delete.o src/libdatastruct/avlnode_delete.lo: src/libdatastruct/avlnode_delete.c src/libdatastruct/avlnode-internal.h src/include/skalibs/avlnode.h src/libdatastruct/avlnode_doublerotate.o src/libdatastruct/avlnode_doublerotate.lo: src/libdatastruct/avlnode_doublerotate.c src/libdatastruct/avlnode-internal.h src/include/skalibs/avlnode.h @@ -824,7 +825,11 @@ src/libunixonacid/sassclient_send.o src/libunixonacid/sassclient_send.lo: src/li src/libunixonacid/sassclient_sendv.o src/libunixonacid/sassclient_sendv.lo: src/libunixonacid/sassclient_sendv.c src/include/skalibs/gensetdyn.h src/include/skalibs/pthread.h src/libunixonacid/sassclient-internal.h src/include/skalibs/sassclient.h src/include/skalibs/siovec.h src/include/skalibs/tai.h src/include/skalibs/textclient.h src/include/skalibs/uint32.h src/libunixonacid/sassclient_start.o src/libunixonacid/sassclient_start.lo: src/libunixonacid/sassclient_start.c src/include/skalibs/genqdyn.h src/include/skalibs/gensetdyn.h src/include/skalibs/posixplz.h src/libunixonacid/sassclient-internal.h src/include/skalibs/sassclient.h src/include/skalibs/textclient.h src/libunixonacid/sassclient_update.o src/libunixonacid/sassclient_update.lo: src/libunixonacid/sassclient_update.c src/include/skalibs/genqdyn.h src/include/skalibs/gensetdyn.h src/include/skalibs/posixishard.h src/libunixonacid/sassclient-internal.h src/include/skalibs/sassclient.h src/include/skalibs/textclient.h src/include/skalibs/uint32.h -src/libunixonacid/sassserver.o src/libunixonacid/sassserver.lo: src/libunixonacid/sassserver.c src/include/skalibs/alloc.h src/include/skalibs/avltree.h src/include/skalibs/error.h src/include/skalibs/functypes.h src/include/skalibs/gensetdyn.h src/include/skalibs/iopause.h src/include/skalibs/sass.h src/include/skalibs/sassserver.h src/include/skalibs/strerr.h src/include/skalibs/tai.h src/include/skalibs/textclient.h src/include/skalibs/textmessage.h src/include/skalibs/uint32.h +src/libunixonacid/sassserver.o src/libunixonacid/sassserver.lo: src/libunixonacid/sassserver.c src/include/skalibs/alloc.h src/include/skalibs/avltree.h src/include/skalibs/error.h src/include/skalibs/gensetdyn.h src/include/skalibs/iopause.h src/include/skalibs/sass.h src/libunixonacid/sassserver-internal.h src/include/skalibs/sassserver.h src/include/skalibs/strerr.h src/include/skalibs/tai.h src/include/skalibs/textclient.h src/include/skalibs/textmessage.h src/include/skalibs/uint32.h +src/libunixonacid/sassserver_init.o src/libunixonacid/sassserver_init.lo: src/libunixonacid/sassserver_init.c src/libunixonacid/sassserver-internal.h src/include/skalibs/sassserver.h src/include/skalibs/strerr.h src/include/skalibs/textclient.h +src/libunixonacid/sassserver_init_frompipe.o src/libunixonacid/sassserver_init_frompipe.lo: src/libunixonacid/sassserver_init_frompipe.c src/libunixonacid/sassserver-internal.h src/include/skalibs/sassserver.h src/include/skalibs/strerr.h src/include/skalibs/textclient.h +src/libunixonacid/sassserver_init_fromsocket.o src/libunixonacid/sassserver_init_fromsocket.lo: src/libunixonacid/sassserver_init_fromsocket.c src/libunixonacid/sassserver-internal.h src/include/skalibs/sassserver.h src/include/skalibs/strerr.h src/include/skalibs/textclient.h +src/libunixonacid/sassserver_init_structures.o src/libunixonacid/sassserver_init_structures.lo: src/libunixonacid/sassserver_init_structures.c src/include/skalibs/avltree.h src/include/skalibs/gensetdyn.h src/libunixonacid/sassserver-internal.h src/include/skalibs/sassserver.h src/include/skalibs/tai.h src/libunixonacid/skaclient_default_cb.o src/libunixonacid/skaclient_default_cb.lo: src/libunixonacid/skaclient_default_cb.c src/include/skalibs/posixishard.h src/include/skalibs/skaclient.h src/include/skalibs/unixmessage.h src/libunixonacid/skaclient_end.o src/libunixonacid/skaclient_end.lo: src/libunixonacid/skaclient_end.c src/include/skalibs/djbunix.h src/include/skalibs/skaclient.h src/include/skalibs/unixmessage.h src/libunixonacid/skaclient_init.o src/libunixonacid/skaclient_init.lo: src/libunixonacid/skaclient_init.c src/libunixonacid/skaclient-internal.h src/include/skalibs/skaclient.h src/include/skalibs/unixmessage.h diff --git a/src/include/skalibs/sassserver.h b/src/include/skalibs/sassserver.h index d74eaf2..6b5bc53 100644 --- a/src/include/skalibs/sassserver.h +++ b/src/include/skalibs/sassserver.h @@ -34,6 +34,11 @@ struct sassserver_s extern void sassserver_init (sassserver *, char const *, char const *, sassserver_send_func_ref, sassserver_cancel_func_ref, size_t, free_func_ref, void *, tain const *, tain *stamp) ; #define sassserver_init_g(a, banner1, banner2, sendf, cancelf, esize, cleanupf, aux, deadline) sassserver_init(a, banner1, banner2, sendf, cancelf, esize, cleanupf, aux, (deadline), &STAMP) +extern void sassserver_init_frompipe (sassserver *, char const *, char const *, sassserver_send_func_ref, sassserver_cancel_func_ref, size_t, free_func_ref, void *, tain const *, tain *stamp) ; +#define sassserver_init_frompipe_g(a, banner1, banner2, sendf, cancelf, esize, cleanupf, aux, deadline) sassserver_init(a, banner1, banner2, sendf, cancelf, esize, cleanupf, aux, (deadline), &STAMP) +extern void sassserver_init_fromsocket (sassserver *, char const *, char const *, sassserver_send_func_ref, sassserver_cancel_func_ref, size_t, free_func_ref, void *, tain const *, tain *stamp) ; +#define sassserver_init_fromsocketg(a, banner1, banner2, sendf, cancelf, esize, cleanupf, aux, deadline) sassserver_init(a, banner1, banner2, sendf, cancelf, esize, cleanupf, aux, (deadline), &STAMP) + extern unsigned int sassserver_prepare_iopause (sassserver const *, iopause_fd *, tain *) ; extern void sassserver_timeout (sassserver *) ; extern void sassserver_write_event (sassserver *, iopause_fd const *) ; diff --git a/src/libunixonacid/sassserver-internal.h b/src/libunixonacid/sassserver-internal.h new file mode 100644 index 0000000..71f8a38 --- /dev/null +++ b/src/libunixonacid/sassserver-internal.h @@ -0,0 +1,24 @@ +/* ISC license. */ + +#ifndef SKALIBS_SASSSERVER_INTERNAL_H +#define SKALIBS_SASSSERVER_INTERNAL_H + +#include <stdint.h> + +#include <skalibs/functypes.h> +#include <skalibs/tai.h> +#include <skalibs/sassserver.h> + +typedef struct sassserver_query_s sassserver_query, sassserver_query_ref ; +struct sassserver_query_s +{ + uint32_t id ; + tain deadline ; + void *data ; +} ; + +#define SASSSERVER_QUERY(a, i) GENSETDYN_P(sassserver_query, &(a)->queries, i) + +extern void sassserver_init_structures (sassserver *a, sassserver_send_func_ref, sassserver_cancel_func_ref, size_t, free_func_ref, void *) ; + +#endif diff --git a/src/libunixonacid/sassserver.c b/src/libunixonacid/sassserver.c index d15fc5a..e87084d 100644 --- a/src/libunixonacid/sassserver.c +++ b/src/libunixonacid/sassserver.c @@ -5,7 +5,6 @@ #include <stdint.h> #include <errno.h> -#include <skalibs/functypes.h> #include <skalibs/uint32.h> #include <skalibs/alloc.h> #include <skalibs/error.h> @@ -18,45 +17,7 @@ #include <skalibs/textclient.h> #include <skalibs/sass.h> #include <skalibs/sassserver.h> - - - /* Private */ - -typedef struct sassserver_query_s sassserver_query, sassserver_query_ref ; -struct sassserver_query_s -{ - uint32_t id ; - tain deadline ; - void *data ; -} ; - -#define SASSSERVER_QUERY(a, i) GENSETDYN_P(sassserver_query, &(a)->queries, i) - -static void *sassserver_deadline_dtok (uint32_t d, void *aux) -{ - return &GENSETDYN_P(sassserver_query, (gensetdyn *)aux, d)->deadline ; -} - -static int sassserver_deadline_cmp (void const *a, void const *b, void *aux) -{ - tain const *aa = a ; - tain const *bb = b ; - (void)aux ; - return tain_less(aa, bb) ? -1 : tain_less(bb, aa) ; -} - -static void *sassserver_id_dtok (uint32_t d, void *aux) -{ - return &GENSETDYN_P(sassserver_query, (gensetdyn *)aux, d)->id ; -} - -static int sassserver_id_cmp (void const *a, void const *b, void *aux) -{ - uint32_t const *aa = a ; - uint32_t const *bb = b ; - (void)aux ; - return *aa < *bb ? -1 : *aa > *bb ; -} +#include "sassserver-internal.h" static void sassserver_sync_answer (sassserver *a, int e) { @@ -178,8 +139,6 @@ static int sassserver_parse_protocol (struct iovec const *v, void *aux) } - /* Public */ - void *sassserver_data (sassserver const *a, uint32_t handle) { return SASSSERVER_QUERY(a, handle)->data ; @@ -221,20 +180,6 @@ void sassserver_async_success (sassserver *a, uint32_t handle, uint32_t flags, c sassserver_async_successv(a, handle, flags, &v, 1) ; } -void sassserver_init (sassserver *a, char const *banner1, char const *banner2, sassserver_send_func_ref sendf, sassserver_cancel_func_ref cancelf, size_t datasize, free_func_ref cleanupf, void *aux, tain const *deadline, tain *stamp) -{ - if (!textclient_server_01x_init_frompipe(banner1, strlen(banner1), banner2, strlen(banner2), deadline, stamp)) - strerr_diefu1sys(111, "sync with client") ; - a->sendf = sendf ; - a->cancelf = cancelf ; - a->datasize = datasize ; - a->cleanupf = cleanupf ; - a->aux = aux ; - gensetdyn_init(&a->queries, sizeof(sassserver_query), 8, 3, 8) ; - avltree_init(&a->by_deadline, 8, 3, 8, &sassserver_deadline_dtok, &sassserver_deadline_cmp, &a->queries) ; - avltree_init(&a->by_id, 8, 3, 8, &sassserver_id_dtok, &sassserver_id_cmp, &a->queries) ; -} - unsigned int sassserver_prepare_iopause (sassserver const *a, iopause_fd *x, tain *deadline) { uint32_t i ; diff --git a/src/libunixonacid/sassserver_init.c b/src/libunixonacid/sassserver_init.c new file mode 100644 index 0000000..9aa0725 --- /dev/null +++ b/src/libunixonacid/sassserver_init.c @@ -0,0 +1,13 @@ +/* ISC license. */ + +#include <skalibs/strerr.h> +#include <skalibs/textclient.h> +#include <skalibs/sassserver.h> +#include "sassserver-internal.h" + +void sassserver_init (sassserver *a, char const *banner1, char const *banner2, sassserver_send_func_ref sendf, sassserver_cancel_func_ref cancelf, size_t datasize, free_func_ref cleanupf, void *aux, tain const *deadline, tain *stamp) +{ + if (!textclient_server_01x_init(banner1, strlen(banner1), banner2, strlen(banner2), deadline, stamp)) + strerr_diefu1sys(111, "sync with client") ; + sassserver_init_structures(a, sendf, cancelf, datasize, cleanupf, aux) ; +} diff --git a/src/libunixonacid/sassserver_init_frompipe.c b/src/libunixonacid/sassserver_init_frompipe.c new file mode 100644 index 0000000..e75e60b --- /dev/null +++ b/src/libunixonacid/sassserver_init_frompipe.c @@ -0,0 +1,13 @@ +/* ISC license. */ + +#include <skalibs/strerr.h> +#include <skalibs/textclient.h> +#include <skalibs/sassserver.h> +#include "sassserver-internal.h" + +void sassserver_init_frompipe (sassserver *a, char const *banner1, char const *banner2, sassserver_send_func_ref sendf, sassserver_cancel_func_ref cancelf, size_t datasize, free_func_ref cleanupf, void *aux, tain const *deadline, tain *stamp) +{ + if (!textclient_server_01x_init_frompipe(banner1, strlen(banner1), banner2, strlen(banner2), deadline, stamp)) + strerr_diefu1sys(111, "sync with client") ; + sassserver_init_structures(a, sendf, cancelf, datasize, cleanupf, aux) ; +} diff --git a/src/libunixonacid/sassserver_init_fromsocket.c b/src/libunixonacid/sassserver_init_fromsocket.c new file mode 100644 index 0000000..48fd1d4 --- /dev/null +++ b/src/libunixonacid/sassserver_init_fromsocket.c @@ -0,0 +1,13 @@ +/* ISC license. */ + +#include <skalibs/strerr.h> +#include <skalibs/textclient.h> +#include <skalibs/sassserver.h> +#include "sassserver-internal.h" + +void sassserver_init_fromsocket (sassserver *a, char const *banner1, char const *banner2, sassserver_send_func_ref sendf, sassserver_cancel_func_ref cancelf, size_t datasize, free_func_ref cleanupf, void *aux, tain const *deadline, tain *stamp) +{ + if (!textclient_server_01x_init_fromsocket(banner1, strlen(banner1), banner2, strlen(banner2), deadline, stamp)) + strerr_diefu1sys(111, "sync with client") ; + sassserver_init_structures(a, sendf, cancelf, datasize, cleanupf, aux) ; +} diff --git a/src/libunixonacid/sassserver_init_structures.c b/src/libunixonacid/sassserver_init_structures.c new file mode 100644 index 0000000..ddb1d28 --- /dev/null +++ b/src/libunixonacid/sassserver_init_structures.c @@ -0,0 +1,47 @@ +/* ISC license. */ + +#include <stdint.h> + +#include <skalibs/tai.h> +#include <skalibs/gensetdyn.h> +#include <skalibs/avltree.h> +#include <skalibs/sassserver.h> +#include "sassserver-internal.h" + +static void *sassserver_deadline_dtok (uint32_t d, void *aux) +{ + return &GENSETDYN_P(sassserver_query, (gensetdyn *)aux, d)->deadline ; +} + +static int sassserver_deadline_cmp (void const *a, void const *b, void *aux) +{ + tain const *aa = a ; + tain const *bb = b ; + (void)aux ; + return tain_less(aa, bb) ? -1 : tain_less(bb, aa) ; +} + +static void *sassserver_id_dtok (uint32_t d, void *aux) +{ + return &GENSETDYN_P(sassserver_query, (gensetdyn *)aux, d)->id ; +} + +static int sassserver_id_cmp (void const *a, void const *b, void *aux) +{ + uint32_t const *aa = a ; + uint32_t const *bb = b ; + (void)aux ; + return *aa < *bb ? -1 : *aa > *bb ; +} + +void sassserver_init_structures (sassserver *a, sassserver_send_func_ref sendf, sassserver_cancel_func_ref cancelf, size_t datasize, free_func_ref cleanupf, void *aux) +{ + a->sendf = sendf ; + a->cancelf = cancelf ; + a->datasize = datasize ; + a->cleanupf = cleanupf ; + a->aux = aux ; + gensetdyn_init(&a->queries, sizeof(sassserver_query), 8, 3, 8) ; + avltree_init(&a->by_deadline, 8, 3, 8, &sassserver_deadline_dtok, &sassserver_deadline_cmp, &a->queries) ; + avltree_init(&a->by_id, 8, 3, 8, &sassserver_id_dtok, &sassserver_id_cmp, &a->queries) ; +} |
