text: var utils = require('../../../util/utils');
  var logger = require('pomelo-logger').getLogger('forward-log', __filename);
  /**
   * Remote service for backend servers.
   * Receive and handle request message forwarded from frontend server.
   */
  module.exports = function(app) {
    return new Remote(app);
  };
  
  var Remote = function(app) {
    this.app = app;
  };
  
  /**
   * Forward message from frontend server to other server's handlers
   *
   * @param msg {Object} request message
   * @param session {Object} session object for current request
   * @param cb {Function} callback function
   */
  Remote.prototype.forwardMessage = function(msg, session, cb) {
    var server = this.app.components.__server__;
    var sessionService = this.app.components.__backendSession__;
  
    if(!server) {
      logger.error('server component not enable on %s', this.app.serverId);
      utils.invokeCallback(cb, new Error('server component not enable'));
      return;
    }
  
    if(!sessionService) {
      logger.error('backend session component not enable on %s', this.app.serverId);
      utils.invokeCallback(cb, new Error('backend sesssion component not enable'));
      return;
    }
  
    // generate backend session for current request
    var backendSession = sessionService.create(session);
  
    // handle the request
  
    logger.debug('backend server [%s] handle message: %j', this.app.serverId, msg);
  
    server.handle(msg, backendSession, function(err, resp, opts) {
      utils.invokeCallback(cb, err, resp, opts);
    });
  };
  