aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/deps.mak7
-rw-r--r--src/include/skalibs/sassserver.h5
-rw-r--r--src/libunixonacid/sassserver-internal.h24
-rw-r--r--src/libunixonacid/sassserver.c57
-rw-r--r--src/libunixonacid/sassserver_init.c13
-rw-r--r--src/libunixonacid/sassserver_init_frompipe.c13
-rw-r--r--src/libunixonacid/sassserver_init_fromsocket.c13
-rw-r--r--src/libunixonacid/sassserver_init_structures.c47
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) ;
+}