X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=7930bdb371b121c04e1860f709cf741155672a4b;hb=8dff3447cea6df8ab727d9615cd07b3774ccffa0;hp=569af654a13bc9e3443e6949ee3b3814ea5b8a35;hpb=46d9538587a3521caa1e3b20bf337a53ed400777;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 569af654..7930bdb3 100644 --- a/src/session.h +++ b/src/session.h @@ -14,10 +14,11 @@ * 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; @@ -27,6 +28,19 @@ struct afb_context 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 @@ -35,6 +49,7 @@ struct AFB_clientCtx 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); @@ -43,6 +58,11 @@ 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);