X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=include%2Flocal-def.h;h=6d2194067f83cd0dacde33b974cb8de0f2a6491e;hb=a4b35de73384d4394b5201838c1c785355d9a7fd;hp=cbbef0f96d976e59000fbbbd5401fa62bc424a8c;hpb=4e43e3b53482bff8cb835271eb3207aeaf593812;p=src%2Fapp-framework-binder.git diff --git a/include/local-def.h b/include/local-def.h index cbbef0f9..6d219406 100644 --- a/include/local-def.h +++ b/include/local-def.h @@ -18,6 +18,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifndef LOCAL_DEF_H +#define LOCAL_DEF_H #ifndef _GNU_SOURCE #define _GNU_SOURCE @@ -61,6 +63,7 @@ #define DEFLT_CACHE_TIMEOUT 100000 // default Static File Chache [Client Side Cache 100000~=1day] #define DEFLT_AUTH_TOKEN NULL // expect for debug should == NULL #define DEFLT_HTTP_TIMEOUT 15 // Max MibMicroHttp timeout +#define AFB_MAX_PLUGINS 20 // Max number of plugins for a given binder typedef int BOOL; #ifndef FALSE @@ -74,6 +77,8 @@ typedef int BOOL; #define STATIC static #define FAILED -1 +#define AUDIO_BUFFER "/tmp/buf" + extern int verbose; // this is the only global variable // Plugin Type @@ -93,6 +98,7 @@ extern char *ERROR_LABEL[]; typedef json_object* (*AFB_apiCB)(); +typedef void (*AFB_freeCtxCB)(void*, void*, char*); // Error code are requested through function to manage json usage count typedef struct { @@ -101,7 +107,15 @@ typedef struct { json_object *json; } AFB_errorT; -typedef enum {AFB_POST_NONE=0, AFB_POST_JSON, AFB_POST_FORM} AFB_PostType; +typedef enum {AFB_POST_NONE=0, AFB_POST_JSON, AFB_POST_FORM, AFB_POST_EMPTY} AFB_PostType; + +// Post Upload File Handle +typedef struct { + int fd; + char *path; + int errcode; + json_object* jresp; +} AFB_PostCtx; typedef struct { int len; // post element size @@ -157,7 +171,7 @@ typedef struct { int localhostOnly; int httpdPort; char *smack; // smack label - char *plugins; // list of requested plugins + char *ldpaths; // list of plugins directories char *rootdir; // base dir for httpd file download char *rootbase; // Angular HTML5 base URL char *rootapi; // Base URL for REST APIs @@ -169,6 +183,7 @@ typedef struct { int cacheTimeout; int apiTimeout; int cntxTimeout; // Client Session Context timeout + int pluginCount; // loaded plugins count AFB_aliasdir *aliasdir; // alias mapping for icons,apps,... } AFB_config; @@ -205,31 +220,32 @@ typedef struct { AFB_restapi *apis; void *handle; int ctxCount; - AFB_apiCB freeCtxCB; // callback to free application context [null for standard free] + AFB_freeCtxCB freeCtxCB; // callback to free application context [null for standard free] } AFB_plugin; // User Client Session Context typedef struct { - int cid; // index 0 if global char uuid[37]; // long term authentication of remote client char token[37]; // short term authentication of remote client time_t timeStamp; // last time token was refresh int restfull; // client does not use cookie - void *ctx; // application specific context - AFB_plugin *plugin; // provide callback and easy access to plugin + void **contexts; // application specific context [one per plugin]] + AFB_plugin **plugins; // we need plugins reference to cleanup session outside of call context } AFB_clientCtx; // MHD_lookup_connection_value(connection, MHD_GET_ARGUMENT_KIND, "value"); typedef struct { + const char *uuid; const char *url; - char *plugin; + char *prefix; // plugin convivial name char *api; AFB_PostRequest *post; json_object *jresp; - AFB_clientCtx *client; // needed because libmicrohttp cannot create an empty response - int restfull; // request is resfull [uuid token provided] - int errcode; // http error code + void *context; // Hold Client Context when using session + void *handle; // provide callback and easy access to plugin + int restfull; // request is resfull [uuid token provided] + int errcode; // http error code sigjmp_buf checkPluginCall; // context save for timeout set/longjmp AFB_config *config; // plugin may need access to config struct MHD_Connection *connection; @@ -256,3 +272,5 @@ typedef struct { #include "proto-def.h" + +#endif /* LOCAL_DEF_H */