X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=7930bdb371b121c04e1860f709cf741155672a4b;hb=f262b0f726ac0577f40525038b779185f144873f;hp=e3b9b81171d3eef94d5ec9e77937db72773f70b9;hpb=520bbafb30ce49b94b7825ff553d8cb5bda6d612;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index e3b9b811..7930bdb3 100644 --- a/src/session.h +++ b/src/session.h @@ -15,10 +15,55 @@ * limitations under the License. */ -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 ctxStoreInit (int); +#pragma once + +struct json_object; + +struct afb_context +{ + void *context; + void (*free_context)(void*); +}; + +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_event_sender_itf +{ + void (*send)(void *closure, const char *event, struct json_object *object); +}; + +struct afb_event_sender +{ + const struct afb_event_sender_itf *itf; + void *closure; +}; + +struct afb_event_sender_list; + +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 + struct afb_event_sender_list *senders; +}; + +extern void ctxStoreInit (int max_session_count, int timeout, const char *initok, int context_count); + +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 ctxClientEventSenderAdd(struct AFB_clientCtx *clientCtx, struct afb_event_sender sender); +extern void ctxClientEventSenderRemove(struct AFB_clientCtx *clientCtx, struct afb_event_sender sender); +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 int ctxTokenCheckLen (struct AFB_clientCtx *clientCtx, const char *token, size_t length); +extern void ctxTokenNew (struct AFB_clientCtx *clientCtx);