X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=569af654a13bc9e3443e6949ee3b3814ea5b8a35;hb=46d9538587a3521caa1e3b20bf337a53ed400777;hp=0862b37b1f3a85925c5e54316b66ac951618d020;hpb=1205c90cccd3144bab24b4b5fd8dcbf0d0e6b570;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 0862b37b..569af654 100644 --- a/src/session.h +++ b/src/session.h @@ -16,29 +16,34 @@ */ // User Client Session Context -struct AFB_clientCtx +#pragma once + +struct afb_context { - 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 *context; + void (*free_context)(void*); }; -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 *afb_context_get(struct afb_context *actx); +extern void afb_context_set(struct afb_context *actx, void *context, void (*free_context)(void*)); + +struct AFB_clientCtx +{ + time_t expiration; // expiration time of the token + int created; + unsigned refcount; + struct afb_context *contexts; + char uuid[37]; // long term authentication of remote client + char token[37]; // short term authentication of remote client +}; -extern void ctxStoreInit (int nbSession, int timeout, int apicount, const char *initok); +extern void ctxStoreInit (int max_session_count, int timeout, const char *initok, int context_count); -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); +extern struct AFB_clientCtx *ctxClientGetForUuid (const char *uuid); +extern struct AFB_clientCtx *ctxClientGet(struct AFB_clientCtx *clientCtx); +extern void ctxClientPut(struct AFB_clientCtx *clientCtx); +extern void ctxClientClose (struct AFB_clientCtx *clientCtx); +extern int ctxTokenCheck (struct AFB_clientCtx *clientCtx, const char *token); +extern int ctxTokenCheckLen (struct AFB_clientCtx *clientCtx, const char *token, size_t length); +extern void ctxTokenNew (struct AFB_clientCtx *clientCtx);