aboutsummaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2026-02-20 20:55:45 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2026-02-20 20:55:45 +0000
commit48489c67e90a664466ec71c74bda80b1fc0da879 (patch)
tree02a0dd769afa0ac300bbb9fbf586e4dd48850ed0 /src/include
parentee9c49369fe58e8159395c5624c654d8ed242a60 (diff)
downloadskalibs-48489c67e90a664466ec71c74bda80b1fc0da879.tar.gz
Add sassclient/sassserver, prepare for 2.14.6.0
Diffstat (limited to 'src/include')
-rw-r--r--src/include/skalibs/sassclient.h44
-rw-r--r--src/include/skalibs/sassserver.h29
-rw-r--r--src/include/skalibs/unixonacid.h2
3 files changed, 75 insertions, 0 deletions
diff --git a/src/include/skalibs/sassclient.h b/src/include/skalibs/sassclient.h
new file mode 100644
index 0000000..b932414
--- /dev/null
+++ b/src/include/skalibs/sassclient.h
@@ -0,0 +1,44 @@
+/* ISC license. */
+
+#ifndef SKALIBS_SASSCLIENT_H
+#define SKALIBS_SASSCLIENT_H
+
+#include <pthread.h>
+
+#include <skalibs/tai.h>
+#include <skalibs/textclient.h>
+#include <skalibs/gensetdyn.h>
+#include <skalibs/genqdyn.h>
+
+typedef struct sassclient_s sassclient, *sassclient_ref ;
+struct sassclient_s
+{
+ textclient connection ;
+ gensetdyn store ; /* sassclient_data */
+ genqdyn results ; /* char id[4] + char status[4] */
+ pthread_mutex_t connection_mutex ;
+ pthread_mutex_t results_mutex ;
+} ;
+#define SASSCLIENT_ZERO { .connection = TEXTCLIENT_ZERO, .store = GENSETDYN_ZERO, .results = GENQDYN_ZERO }
+
+typedef int sassclient_cb_func (char const *, size_t, void *) ;
+typedef sassclient_cb_func *sassclient_cb_func_ref ;
+
+extern int sassclient_start (sassclient *, char const *const *, char const *, char const *, tain const *, tain *) ;
+#define sassclient_start_g(a, argv, banner1, banner2, deadline) sassclient_start(a, argv, banner1, banner2, (deadline), &STAMP)
+extern void sassclient_end (sassclient *) ;
+
+#define sassclient_fd(a) textclient_fd(&(a)->connection)
+extern int sassclient_update (sassclient *) ;
+extern int sassclient_ack (sassclient *, uint32_t *, int *) ;
+
+extern int sassclient_send (sassclient *, uint32_t *, uint32_t, uint32_t, char const *, size_t, sassclient_cb_func_ref, void *, tain const *, tain *) ;
+#define sassclient_send_g(a, id, timeout, opcode, s, len, cb, data, deadline) sassclient_send(a, id, timeout, opcode, s, len, cb, data, (deadline), &STAMP)
+
+extern int sassclient_sendv (sassclient *, uint32_t *, uint32_t, uint32_t, struct iovec const *, unsigned int, sassclient_cb_func_ref, void *, tain const *, tain *) ;
+#define sassclient_sendv_g(a, id, timeout, opcode, v, n, cb, data, deadline) sassclient_sendv(a, id, timeout, opcode, v, n, cb, data, (deadline), &STAMP)
+
+extern int sassclient_cancel (sassclient *, uint32_t, tain const *, tain *) ;
+#define sassclient_cancel_g(a, id, deadline) sassclient_cancel(a, id, (deadline), &STAMP)
+
+#endif
diff --git a/src/include/skalibs/sassserver.h b/src/include/skalibs/sassserver.h
new file mode 100644
index 0000000..fcd1286
--- /dev/null
+++ b/src/include/skalibs/sassserver.h
@@ -0,0 +1,29 @@
+/* ISC license. */
+
+#ifndef SKALIBS_SASSSERVER_H
+#define SKALIBS_SASSSERVER_H
+
+#include <sys/uio.h>
+#include <stdint.h>
+
+#include <skalibs/tai.h>
+#include <skalibs/iopause.h>
+
+typedef void *sassserver_send_func (uint32_t, uint32_t, char const *, size_t) ;
+typedef sassserver_send_func *sassserver_send_func_ref ;
+
+typedef void sassserver_cancel_func (void *) ;
+typedef sassserver_cancel_func *sassserver_cancel_func_ref ;
+
+extern void sassserver_init (char const *, char const *, sassserver_send_func_ref, sassserver_cancel_func_ref, tain const *, tain *stamp) ;
+#define sassserver_init_g(banner1, banner2, deadline) sassserver_init(banner1, banner2, (deadline), &STAMP)
+extern unsigned int sassserver_prepare_iopause (iopause_fd *, tain *) ;
+extern void sassserver_timeout (void) ;
+extern int sassserver_event (iopause_fd const *) ;
+extern void *sassserver_data (uint32_t) ;
+
+extern void sassserver_async_failure (uint32_t, int) ;
+extern void sassserver_async_success (uint32_t, char const *, size_t) ;
+extern void sassserver_async_successv (uint32_t, struct iovec const *, unsigned int) ;
+
+#endif
diff --git a/src/include/skalibs/unixonacid.h b/src/include/skalibs/unixonacid.h
index d9f952c..1cba96a 100644
--- a/src/include/skalibs/unixonacid.h
+++ b/src/include/skalibs/unixonacid.h
@@ -12,5 +12,7 @@
#include <skalibs/unixconnection.h>
#include <skalibs/kolbak.h>
#include <skalibs/skaclient.h>
+#include <skalibs/sassclient.h>
+#include <skalibs/sassserver.h>
#endif