vocabulary: moving from 'plugin' to 'binding'
[src/app-framework-binder.git] / src / main.c
index 54cd6f6..7c45721 100644 (file)
@@ -17,7 +17,7 @@
  */
 
 #define _GNU_SOURCE
-#define NO_PLUGIN_VERBOSE_MACRO
+#define NO_BINDING_VERBOSE_MACRO
 
 #include <stdlib.h>
 #include <stdio.h>
 #include "verbose.h"
 #include "afb-common.h"
 
-#include <afb/afb-plugin.h>
+#include <afb/afb-binding.h>
 
-#if !defined(PLUGIN_INSTALL_DIR)
-#error "you should define PLUGIN_INSTALL_DIR"
+#if !defined(BINDING_INSTALL_DIR)
+#error "you should define BINDING_INSTALL_DIR"
 #endif
 
 #define AFB_VERSION    "0.5"
@@ -77,7 +77,9 @@
 
 #define DBUS_CLIENT        20
 #define DBUS_SERVICE       21
-#define SO_PLUGIN          22
+#define SO_BINDING         22
+
+#define SET_SESSIONMAX     23
 
 // Command line structure hold cli --command + help text
 typedef struct {
@@ -101,13 +103,13 @@ static  AFB_options cliOptions [] = {
   {SET_ROOT_API     ,1,"rootapi"         , "HTML Root API URL [default /api]"},
   {SET_ALIAS        ,1,"alias"           , "Muliple url map outside of rootdir [eg: --alias=/icons:/usr/share/icons]"},
   
-  {SET_APITIMEOUT   ,1,"apitimeout"      , "Plugin API timeout in seconds [default 10]"},
+  {SET_APITIMEOUT   ,1,"apitimeout"      , "Binding 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]"},
 
-  {SET_LDPATH       ,1,"ldpaths"         , "Load Plugins from dir1:dir2:... [default = PLUGIN_INSTALL_DIR"},
+  {SET_LDPATH       ,1,"ldpaths"         , "Load bindingss from dir1:dir2:... [default = "BINDING_INSTALL_DIR"]"},
   {SET_AUTH_TOKEN   ,1,"token"           , "Initial Secret [default=no-session, --token="" for session without authentication]"},
   
   {DISPLAY_VERSION  ,0,"version"         , "Display version and copyright"},
@@ -118,7 +120,9 @@ static  AFB_options cliOptions [] = {
 
   {DBUS_CLIENT      ,1,"dbus-client"     , "bind to an afb service through dbus"},
   {DBUS_SERVICE     ,1,"dbus-server"     , "provides an afb service through dbus"},
-  {SO_PLUGIN        ,1,"plugin"          , "load the plugin of path"},
+  {SO_BINDING       ,1,"binding"         , "load the binding of path"},
+
+  {SET_SESSIONMAX   ,1,"session-max"     , "max count of session simultaneously [default 10]"},
 
   {0, 0, NULL, NULL}
  };
@@ -160,7 +164,7 @@ static void printHelp(FILE *file, const char *name)
          fprintf (file, "  --%-15s %s\n", command, cliOptions[ind].help);
       }
     }
-    fprintf (file, "Example:\n  %s\\\n  --verbose --port=1234 --token='azerty' --ldpaths=build/plugins:/usr/lib64/agl/plugins\n", name);
+    fprintf (file, "Example:\n  %s\\\n  --verbose --port=1234 --token='azerty' --ldpaths=build/bindings:/usr/lib64/agl/bindings\n", name);
 }
 
 // load config from disk and merge with CLI option
@@ -170,7 +174,7 @@ static void config_set_default (struct afb_config * config)
    if (config->httpdPort == 0)
        config->httpdPort = 1234;
    
-   // default Plugin API timeout
+   // default binding API timeout
    if (config->apiTimeout == 0)
        config->apiTimeout = DEFLT_API_TIMEOUT;
    
@@ -186,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) {
@@ -205,7 +213,7 @@ static void config_set_default (struct afb_config * config)
        config->rootapi = "/api";
 
    if  (config->ldpaths == NULL)
-       config->ldpaths = PLUGIN_INSTALL_DIR;
+       config->ldpaths = BINDING_INSTALL_DIR;
 
    // if no session dir create a default path from rootdir
    if  (config->sessiondir == NULL) {
@@ -346,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;
@@ -371,7 +384,7 @@ static void parse_arguments(int argc, char *argv[], struct afb_config *config)
 
     case DBUS_CLIENT:
     case DBUS_SERVICE:
-    case SO_PLUGIN:
+    case SO_BINDING:
        if (optarg == 0) goto needValueForOption;
        add_item(config, optc, optarg);
        break;
@@ -546,9 +559,9 @@ static void start_items(struct afb_config_item *item)
        exit(1);
       }
       break;
-    case SO_PLUGIN:
-      if (afb_api_so_add_plugin(item->value) < 0) {
-        ERROR("can't start the plugin of path %s",item->value);
+    case SO_BINDING:
+      if (afb_api_so_add_binding(item->value) < 0) {
+        ERROR("can't start the binding of path %s",item->value);
        exit(1);
       }
       break;
@@ -588,7 +601,7 @@ int main(int argc, char *argv[])  {
   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);
+      ERROR("initialisation of bindings within %s failed", config->ldpaths);
       exit(1);
     }
   }
@@ -596,7 +609,7 @@ int main(int argc, char *argv[])  {
   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);
@@ -630,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);