游戏编程研究院pomelo 游戏开发

pomelo服务器启动加载--I

2015-04-25  本文已影响755人  抓不住的风

compoments/master.js

game-server/
app.js
var pomelo = require('pomelo');
var app = pomelo.createApp();

game-server/node_modules/pomelo/lib/pomelo.js
var application = require('./application');
Pomelo.createApp = function (opts) {
console.log('Pomelo.createApp----->>',opts);
var app = application;
app.init(opts); //初始化application
self.app = app;
return app;
};

game-server/node_modules/pomelo/lib/application.js

var appUtil = require('./util/appUtil');

Application.init = function(opts) {
console.log('Application.init----->>>>>');
opts = opts || {};
this.loaded = []; // loaded component list
this.components = {}; // name -> component map
this.settings = {}; // collection keep set/get
var base = opts.base || path.dirname(require.main.filename);
this.set(Constants.RESERVED.BASE, base, true);
this.event = new EventEmitter(); // event object to sub/pub events

// current server info
this.serverId = null; // current server id
this.serverType = null; // current server type
this.curServer = null; // current server info
this.startTime = null; // current server start time

// global server infos
this.master = null; // master server info
this.servers = {}; // current global server info maps, id -> info
this.serverTypeMaps = {}; // current global type maps, type -> [info]
this.serverTypes = []; // current global server type list
this.lifecycleCbs = {}; // current server custom lifecycle callbacks
this.clusterSeq = {}; // cluster id seqence

appUtil.defaultConfiguration(this); //读取配置文件

this.state = STATE_INITED;
logger.info('application inited: %j', this.getServerId());
};

game-server/node_modules/pomelo/lib/util/appUtil.js

module.exports.defaultConfiguration = function(app) {
var args = parseArgs(process.argv);
setupEnv(app, args);
loadMaster(app); //先加载master.json服务器配置
loadServers(app); //加载servers.json服务器配置
processArgs(app, args);
configLogger(app);
loadLifecycle(app);
};

//application.js
var loadMaster = function(app) {
app.loadConfigBaseApp(Constants.RESERVED.MASTER, Constants.FILEPATH.MASTER);//读取文件内容
app.master = app.get(Constants.RESERVED.MASTER);//设置master配置
};

//加载配置完毕.接下来启动master服务器
./lib/application.js
/**

var self = this;
appUtil.startByType(self, function() {
appUtil.loadDefaultComponents(self);
var startUp = function() {
appUtil.optComponents(self.loaded, Constants.RESERVED.START, function(err) { //判断是否loaded的服务器是否有start方法,有则执行
//启动master, monitor服务器 loaded : [master :[],monitor : [object]]
// ./lib/master/master.js && monitor.js 写有start方法
self.state = STATE_START;
if(err) {
utils.invokeCallback(cb, err);
} else {//走
logger.info('%j enter after start...', self.getServerId());//当前服务器Id为master服务器Id
self.afterStart(cb);
}
});
};
var beforeFun = self.lifecycleCbs[Constants.LIFECYCLE.BEFORE_STARTUP];
if(!!beforeFun) {//没走
beforeFun.call(null, self, startUp);
} else {//走
startUp();
}
});
};

上一篇下一篇

猜你喜欢

热点阅读