docs: function(opts) {
    EventEmitter.call(this);
    this.opts = opts;
    this.servers = {}; // remote server info map, key: server id, value: info
    this.serversMap = {}; // remote server info map, key: serverType, value: servers array
    this.onlines = {}; // remote server online map, key: server id, value: 0/offline 1/online
    this.mailboxFactory = opts.mailboxFactory || defaultMailboxFactory;
  
    // filters
    this.befores = [];
    this.afters = [];
  
    // pending request queues
    this.pendings = {};
    this.pendingSize = opts.pendingSize || constants.DEFAULT_PARAM.DEFAULT_PENDING_SIZE;
  
    // connecting remote server mailbox map
    this.connecting = {};
  
    // working mailbox map
    this.mailboxes = {};
  
    this.state = STATE_INITED;
  }