X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=7930bdb371b121c04e1860f709cf741155672a4b;hb=04b1757467bcb4e287dd1c34d5a21f76705340d6;hp=9b54179b9e6bbd3a3dff51f576a6029da6cce65c;hpb=bbe18a624f4961165cf52d7f4c25de6f3a7ec012;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 9b54179b..7930bdb3 100644 --- a/src/session.h +++ b/src/session.h @@ -14,23 +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_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 timeStamp; // last time token was refresh - 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 + 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; }; -typedef struct AFB_clientCtx AFB_clientCtx; -extern void ctxStoreGarbage (); +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 void ctxStoreInit (int nbSession, int timeout, int apicount, const char *initok); +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 AFB_clientCtx *ctxClientGet (const char *uuid); -extern int ctxClientClose (AFB_clientCtx *clientCtx); -extern int ctxTokenCheck (AFB_clientCtx *clientCtx, const char *token); -extern int ctxTokenNew (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);