X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=f6d67fe65fa0965f6cd31812d444146c84d9748c;hb=bd68881a7977d2fe63d4ca85b757ed9c127ec21d;hp=4a1c400bdefef604addaa8c839e03db4ccc1a5c2;hpb=83ce3b29a598141f8f28afde655beb07ec78c312;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 4a1c400b..f6d67fe6 100644 --- a/src/session.h +++ b/src/session.h @@ -14,24 +14,56 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// User Client Session Context + +#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_listener_itf +{ + void (*send)(void *closure, const char *event, struct json_object *object); +}; + +struct afb_event_listener +{ + const struct afb_event_listener_itf *itf; + void *closure; +}; + +struct afb_event_listener_list; struct AFB_clientCtx { - time_t expiration; // expiration time of the token int created; unsigned refcount; - void **contexts; // application specific context [one per plugin] + time_t expiration; // expiration time of the token + 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_listener_list *listeners; }; -extern void ctxStoreInit (int nbSession, int timeout, const char *initok); +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 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 int ctxTokenCheckLen (struct AFB_clientCtx *clientCtx, const char *token, size_t length); extern void ctxTokenNew (struct AFB_clientCtx *clientCtx);