wip send/recv
[psmb.git] / include / psmb.h
index 4b92756b85b394a6a6717b4519ab545dc6dfa74d..c5869ecd783e1aa5532acfaade7b5010f260cded 100644 (file)
@@ -2,27 +2,37 @@
 
 #include <stdlib.h>
 #include <stdbool.h>
+#include <netinet/in.h>
 
 typedef struct _psmb_ctx psmb_ctx_t;
-typedef struct _psmb_result psmb_result_t;
+typedef struct _psmb_result { int code; } psmb_result_t;
 
 psmb_ctx_t *psmb_new(void);
 psmb_ctx_t *psmb_new_mm(void *(*malloc)(size_t size),
-                       void (*free)(void *ptr),
-                       void *(*realloc)(void *ptr, size_t size));
+       void (*free)(void *ptr),
+       void *(*realloc)(void *ptr, size_t size));
+psmb_result_t psmb_set_logf(psmb_ctx_t *ctx,
+       void (*logf)(void *log_priv, int priority, const char *format, ...),
+       void *log_priv);
 psmb_result_t psmb_set_pmtu(psmb_ctx_t *ctx, unsigned int pmtu);
 psmb_result_t psmb_set_port(psmb_ctx_t *ctx, unsigned short pmtu);
+psmb_result_t psmb_set_mgrp(psmb_ctx_t *ctx, struct in6_addr prefix,
+       unsigned char prefixlen);
 psmb_result_t psmb_open(psmb_ctx_t *ctx);
 void psmb_destroy(psmb_ctx_t *ctx);
 int psmb_getfd(psmb_ctx_t *ctx);
+bool psmb_success(psmb_result_t result);
+bool psmb_message_waiting(psmb_result_t result);
 bool psmb_need_write_wait(psmb_result_t result);
 psmb_result_t psmb_ev_rd(psmb_ctx_t *ctx);
 psmb_result_t psmb_ev_wr(psmb_ctx_t *ctx);
 psmb_result_t psmb_ev_ex(psmb_ctx_t *ctx);
 psmb_result_t psmb_subscribe(psmb_ctx_t *ctx, char *channel);
+psmb_result_t psmb_unsubscribe(psmb_ctx_t *ctx, char *channel);
 psmb_result_t psmb_publish(psmb_ctx_t *ctx, char *channel,
-                               void *data, size_t size);
-bool psmb_message(psmb_ctx_t *ctx, char **channel,
-                               void **data, size_t *size);
+       void *data, size_t size);
+psmb_result_t psmb_get_message(psmb_ctx_t *ctx, char **channel,
+       void **data, size_t *size);
+psmb_result_t psmb_acknowledge(psmb_ctx_t *ctx);
 
 #endif