#include <assert.h>
#include <errno.h>
+#include <json.h>
+
#include "session.h"
#define NOW (time(NULL))
clientCtx->expiration = NOW + sessions.timeout;
}
-struct afb_event_sender_list
+struct afb_event_listener_list
{
- struct afb_event_sender_list *next;
- struct afb_event_sender sender;
+ struct afb_event_listener_list *next;
+ struct afb_event_listener listener;
int refcount;
};
-int ctxClientEventSenderAdd(struct AFB_clientCtx *clientCtx, struct afb_event_sender sender)
+int ctxClientEventListenerAdd(struct AFB_clientCtx *clientCtx, struct afb_event_listener listener)
{
- struct afb_event_sender_list *iter, **prv;
+ struct afb_event_listener_list *iter, **prv;
- prv = &clientCtx->senders;
+ prv = &clientCtx->listeners;
for (;;) {
iter = *prv;
if (iter == NULL) {
errno = ENOMEM;
return -1;
}
- iter->sender = sender;
+ iter->listener = listener;
iter->refcount = 1;
*prv = iter;
return 0;
}
- if (iter->sender.itf == sender.itf && iter->sender.closure == sender.closure) {
+ if (iter->listener.itf == listener.itf && iter->listener.closure == listener.closure) {
iter->refcount++;
return 0;
}
}
}
-void ctxClientEventSenderRemove(struct AFB_clientCtx *clientCtx, struct afb_event_sender sender)
+void ctxClientEventListenerRemove(struct AFB_clientCtx *clientCtx, struct afb_event_listener listener)
{
- struct afb_event_sender_list *iter, **prv;
+ struct afb_event_listener_list *iter, **prv;
- prv = &clientCtx->senders;
+ prv = &clientCtx->listeners;
for (;;) {
iter = *prv;
if (iter == NULL)
return;
- if (iter->sender.itf == sender.itf && iter->sender.closure == sender.closure) {
+ if (iter->listener.itf == listener.itf && iter->listener.closure == listener.closure) {
if (!--iter->refcount) {
*prv = iter->next;
free(iter);
static int send(struct AFB_clientCtx *clientCtx, const char *event, struct json_object *object)
{
- struct afb_event_sender_list *iter;
+ struct afb_event_listener_list *iter;
int result;
result = 0;
- iter = clientCtx->senders;
+ iter = clientCtx->listeners;
while (iter != NULL) {
- iter->sender.itf->send(iter->sender.closure, event, object);
+ iter->listener.itf->send(iter->listener.closure, event, json_object_get(object));
result++;
iter = iter->next;
}