docs: function AjaxGateway(opts) {
  
      // in HTTP mode they is not initial connection concept adapter as to handle data.
      function HttpRequest (request, response) {
          this.gateway.Debug(7, "Data=[%s]", request.url);
  
          var question=url.parse(request.url, true, true);
          var query=question.query;
  
          var batchRequest = new BatchRequest(this.gateway, query, response);
          var command = path.basename(question.pathname);
          var tracker = true;
  
          if (query.phonenum == undefined) {
              this.gateway.Debug (0,"Hoops phonenum undefined");
              response.writeHeader(400, {"Content-Type": "text/plain"});
              response.write('ERR: AjaxSMS check-phonenum missing phonenum=xxxxx');
              response.end();
              return;
          }
  
          switch (command)  {
  
              case "check-dev-mobile":
                  tracker=false;
              case "check-dev-tracker": // http://geotobe.localnet/smsgateway/check-dev-tracker?phonenum=+33782849007&passwd=123456&apn=free&host=46.105.45.122&port=4010
                  batchRequest.CheckTrackerBySms(tracker, query);
                  break;
  
              case "send-sms-text":
                  batchRequest.SendSmsText(tracker, query);
                  break;
  
              case 'check-accesscode':
                  this.backend.getByEmei(batchRequest.CheckAccessCode, query.imeinum);
                  break;
  
              default:
                  response.writeHeader(400, {"Content-Type": "text/plain"});
                  response.write('ERR: AjaxSMS command: ['+ command + '] in Http Request');
                  response.end();
          }
  
      }
  
      function TcpSvrListenOk () {
          this.gateway.Debug (1,"AjaxGateway [%s] listening", this.uid);
      }
  
      // Server fail to listen on port [probably busy]
      function TcpSvrListenFx (err) {
          this.gateway.Debug (0,"Hoop fail to listen err=%s", err);
          console.log ("### AjaxGateway process abort ###");
          process.exit (-1);
      }
  
      this.uid   = "AjaxGateway:" + opts.name;
      this.debug =  opts.debug;   
  
      // Compute some opts and provide some defaults
      this.opts            =
      { name:       opts.name || "smsg"
      , debug:      opts.debug || 1     // default 1
      , inactivity: opts.timeout || 60  // default 1mn
      };
  
      this.smsc = new SmsControl (opts.smsc);
  
      this.backend = new AjaxBackend (this, opts.userdb);
  
      this.Debug (1,"AjaxGateway Start: %s", opts.name );
      this.AjaxGateway           = http.createServer(HttpRequest);
      this.AjaxGateway.gateway   = this;
      this.AjaxGateway.backend   = this.backend;
      this.AjaxGateway.uid       = "AjaxGateway:" + opts.listenPort;
      this.AjaxGateway.listen(opts.listenPort, TcpSvrListenOk);
      this.AjaxGateway.on('error', TcpSvrListenFx);
  }