X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=ce957352ed2d6e172b82ef2a19a75c89226c9962;hb=5b5a2e4412eea806451c016da9fb285bc09c17ab;hp=fdea9079105ea291e4c555019adc539fee031670;hpb=c7e9786d408f13d8f8f43c6b68da916bbb1ed5f3;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index fdea9079..ce957352 100644 --- a/src/main.c +++ b/src/main.c @@ -17,6 +17,7 @@ */ #define _GNU_SOURCE +#define NO_PLUGIN_VERBOSE_MACRO #include #include @@ -41,13 +42,13 @@ #include "verbose.h" #include "afb-common.h" -#include "afb-plugin.h" +#include #if !defined(PLUGIN_INSTALL_DIR) #error "you should define PLUGIN_INSTALL_DIR" #endif -#define AFB_VERSION "0.4" +#define AFB_VERSION "0.5" // Define command line option #define SET_VERBOSE 1 @@ -78,6 +79,8 @@ #define DBUS_SERVICE 21 #define SO_PLUGIN 22 +#define SET_SESSIONMAX 23 + // Command line structure hold cli --command + help text typedef struct { int val; // command number within application @@ -102,7 +105,7 @@ static AFB_options cliOptions [] = { {SET_APITIMEOUT ,1,"apitimeout" , "Plugin API timeout in seconds [default 10]"}, {SET_CNTXTIMEOUT ,1,"cntxtimeout" , "Client Session Context Timeout [default 900]"}, - {SET_CACHE_TIMEOUT,1,"cache-eol" , "Client cache end of live [default 3600s]"}, + {SET_CACHE_TIMEOUT,1,"cache-eol" , "Client cache end of live [default 3600]"}, {SET_SESSION_DIR ,1,"sessiondir" , "Sessions file path [default rootdir/sessions]"}, @@ -119,6 +122,8 @@ static AFB_options cliOptions [] = { {DBUS_SERVICE ,1,"dbus-server" , "provides an afb service through dbus"}, {SO_PLUGIN ,1,"plugin" , "load the plugin of path"}, + {SET_SESSIONMAX ,1,"session-max" , "max count of session simultaneously [default 10]"}, + {0, 0, NULL, NULL} }; @@ -185,6 +190,10 @@ static void config_set_default (struct afb_config * config) if (config->cntxTimeout == 0) config->cntxTimeout = DEFLT_CNTX_TIMEOUT; + // max count of sessions + if (config->nbSessionMax == 0) + config->nbSessionMax = CTX_NBCLIENTS; + if (config->rootdir == NULL) { config->rootdir = getenv("AFBDIR"); if (config->rootdir == NULL) { @@ -345,6 +354,11 @@ static void parse_arguments(int argc, char *argv[], struct afb_config *config) if (!sscanf (optarg, "%d", &config->cacheTimeout)) goto notAnInteger; break; + case SET_SESSIONMAX: + if (optarg == 0) goto needValueForOption; + if (!sscanf (optarg, "%d", &config->nbSessionMax)) goto notAnInteger; + break; + case SET_FORGROUND: if (optarg != 0) goto noValueForOption; config->background = 0; @@ -479,10 +493,10 @@ static int init_http_server(struct afb_hsrv *hsrv, struct afb_config * config) return 0; for (idx = 0; idx < config->aliascount; idx++) - if (!afb_hsrv_add_alias (hsrv, config->aliasdir[idx].url, config->aliasdir[idx].path, 0)) + if (!afb_hsrv_add_alias (hsrv, config->aliasdir[idx].url, config->aliasdir[idx].path, 0, 0)) return 0; - if (!afb_hsrv_add_alias(hsrv, "", config->rootdir, -10)) + if (!afb_hsrv_add_alias(hsrv, "", config->rootdir, -10, 1)) return 0; if (!afb_hsrv_add_handler(hsrv, config->rootbase, afb_hswitch_one_page_api_redirect, NULL, -20)) @@ -584,13 +598,18 @@ int main(int argc, char *argv[]) { exit (1); } - if (config->ldpaths) - afb_api_so_add_pathset(config->ldpaths); + afb_api_so_set_timeout(config->apiTimeout); + if (config->ldpaths) { + if (afb_api_so_add_pathset(config->ldpaths) < 0) { + ERROR("initialisation of plugins within %s failed", config->ldpaths); + exit(1); + } + } start_items(config->items); config->items = NULL; - ctxStoreInit(CTX_NBCLIENTS, config->cntxTimeout, config->token, afb_apis_count()); + ctxStoreInit(config->nbSessionMax, config->cntxTimeout, config->token, afb_apis_count()); if (!afb_hreq_init_cookie(config->httpdPort, config->rootapi, DEFLT_CNTX_TIMEOUT)) { ERROR("initialisation of cookies failed"); exit (1); @@ -624,6 +643,10 @@ int main(int argc, char *argv[]) { if (hsrv == NULL) exit(1); + /* start the services */ + if (afb_apis_start_all_services(1) < 0) + exit(1); + if (config->readyfd != 0) { static const char readystr[] = "READY=1"; write(config->readyfd, readystr, sizeof(readystr) - 1);