X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=fa6f9c2d9a460c845e1c49af86344308e5b018ed;hb=c94e1ef88adc641ebbab57377b97f8a7b6a70d1b;hp=10af74fd161795cbf1c326e08d8c440600a0e40b;hpb=fb230eee946673ed5ebe9659d623c2a06d0a80ce;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 10af74fd..fa6f9c2d 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,24 +14,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// User Client Session Context - -struct AFB_clientCtx -{ - time_t expiration; // expiration time of the token - int created; - unsigned refcount; - 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 -}; - -extern void ctxStoreInit (int nbSession, int timeout, int apicount, const char *initok); - -extern struct AFB_clientCtx *ctxClientGetForUuid (const char *uuid); -extern struct AFB_clientCtx *ctxClientGet(struct AFB_clientCtx *clientCtx); -extern void ctxClientPut(struct AFB_clientCtx *clientCtx); + +#pragma once + +struct json_object; +struct AFB_clientCtx; + +extern void ctxStoreInit (int max_session_count, int timeout, const char *initok, int context_count); + +extern struct AFB_clientCtx *ctxClientCreate (const char *uuid, int timeout); +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 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*)); + +extern void *ctxClientCookieGet(struct AFB_clientCtx *clientCtx, const void *key); +extern int ctxClientCookieSet(struct AFB_clientCtx *clientCtx, const void *key, void *value, void (*free_value)(void*)); +