X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=af0741004e76534c21084d79497658f48c8b0193;hb=9ee05e42384b34d8626cd8cccfd50538136f369f;hp=0862b37b1f3a85925c5e54316b66ac951618d020;hpb=1205c90cccd3144bab24b4b5fd8dcbf0d0e6b570;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 0862b37b..af074100 100644 --- a/src/session.h +++ b/src/session.h @@ -1,5 +1,5 @@ /* - * Copyright 2016 IoT.bzh + * Copyright (C) 2016 "IoT.bzh" * Author: José Bollo * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,31 +14,43 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// User Client Session Context -struct AFB_clientCtx +#pragma once + +struct json_object; +struct AFB_clientCtx; + +struct afb_event_listener_itf { - time_t timeStamp; // last time token was refresh - int restfull; // client does not use cookie - void **contexts; // application specific context [one per plugin]] - char uuid[37]; // long term authentication of remote client - char token[37]; // short term authentication of remote client + void (*send)(void *closure, const char *event, struct json_object *object); + int (*expects)(void *closure, const char *event); }; -typedef struct AFB_clientCtx AFB_clientCtx; -/* -extern AFB_error ctxTokenRefresh (AFB_clientCtx *clientCtx, AFB_request *request); -extern AFB_error ctxTokenCreate (AFB_clientCtx *clientCtx, AFB_request *request); -extern AFB_error ctxTokenCheck (AFB_clientCtx *clientCtx, AFB_request *request); -extern AFB_error ctxTokenReset (AFB_clientCtx *clientCtx, AFB_request *request); -extern AFB_clientCtx *ctxClientGet (AFB_request *request); -*/ -extern void ctxStoreGarbage (); - -extern void ctxStoreInit (int nbSession, int timeout, int apicount, const char *initok); - -extern AFB_clientCtx *_ctxClientGet (const char *uuid); -extern AFB_error _ctxClientDel (AFB_clientCtx *clientCtx); -extern AFB_error _ctxTokenCheck (AFB_clientCtx *clientCtx, const char *token); -extern AFB_error _ctxTokenNew (AFB_clientCtx *clientCtx); +struct afb_event_listener +{ + const struct afb_event_listener_itf *itf; + void *closure; +}; + +extern void ctxStoreInit (int max_session_count, int timeout, const char *initok, int context_count); + +extern struct AFB_clientCtx *ctxClientGetSession (const char *uuid, int *created); +extern struct AFB_clientCtx *ctxClientAddRef(struct AFB_clientCtx *clientCtx); +extern void ctxClientUnref(struct AFB_clientCtx *clientCtx); +extern void ctxClientClose (struct AFB_clientCtx *clientCtx); + +extern int ctxClientEventListenerAdd(struct AFB_clientCtx *clientCtx, struct afb_event_listener listener); +extern void ctxClientEventListenerRemove(struct AFB_clientCtx *clientCtx, struct afb_event_listener listener); +extern int ctxClientEventSend(struct AFB_clientCtx *clientCtx, const char *event, struct json_object *object); + +extern int ctxTokenCheck (struct AFB_clientCtx *clientCtx, const char *token); +extern void ctxTokenNew (struct AFB_clientCtx *clientCtx); + +extern const char *ctxClientGetUuid (struct AFB_clientCtx *clientCtx); +extern const char *ctxClientGetToken (struct AFB_clientCtx *clientCtx); +extern unsigned ctxClientGetLOA (struct AFB_clientCtx *clientCtx); +extern void ctxClientSetLOA (struct AFB_clientCtx *clientCtx, unsigned loa); + +extern void *ctxClientValueGet(struct AFB_clientCtx *clientCtx, int index); +extern void ctxClientValueSet(struct AFB_clientCtx *clientCtx, int index, void *value, void (*free_value)(void*));