X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fsession.h;h=c2722455b3bf7024d2eb6f347c0e801c51b2710c;hb=f1b901ed676b2d45ec8e6ae3d6ef2f94d79f9ee6;hp=28f25991d4a655b03012e3e2695f290d804dbc5f;hpb=11d36a9f7e16aa9992835f8ce06f0e1e5297b131;p=src%2Fapp-framework-binder.git diff --git a/src/session.h b/src/session.h index 28f25991..c2722455 100644 --- a/src/session.h +++ b/src/session.h @@ -14,23 +14,40 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -// User Client Session Context -struct AFB_clientCtx +#pragma once + +struct json_object; +struct AFB_clientCtx; + +struct afb_event_listener_itf +{ + void (*send)(void *closure, const char *event, struct json_object *object); +}; + +struct afb_event_listener { - 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 + const struct afb_event_listener_itf *itf; + void *closure; }; -extern void ctxStoreInit (int nbSession, int timeout, int apicount, const char *initok); +extern void ctxStoreInit (int max_session_count, int timeout, const char *initok, int context_count); -extern struct AFB_clientCtx *ctxClientGet (const char *uuid); -extern void ctxClientPut(struct AFB_clientCtx *clientCtx); +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 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 void ctxTokenNew (struct AFB_clientCtx *clientCtx); +extern const char *ctxClientGetUuid (struct AFB_clientCtx *clientCtx); +extern const char *ctxClientGetToken (struct AFB_clientCtx *clientCtx); + +extern void *ctxClientValueGet(struct AFB_clientCtx *clientCtx, int index); +extern void ctxClientValueSet(struct AFB_clientCtx *clientCtx, int index, void *value, void (*free_value)(void*)); +