moduleUtil.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. var os = require('os');
  2. var admin = require('pomelo-admin');
  3. var utils = require('./utils');
  4. var Constants = require('./constants');
  5. var pathUtil = require('./pathUtil');
  6. var starter = require('../master/starter');
  7. var logger = require('pomelo-logger').getLogger('pomelo', __filename);
  8. var pro = module.exports;
  9. /**
  10. * Load admin modules
  11. */
  12. pro.loadModules = function(self, consoleService) {
  13. // load app register modules
  14. var _modules = self.app.get(Constants.KEYWORDS.MODULE);
  15. if(!_modules) {
  16. return;
  17. }
  18. var modules = [];
  19. for(var m in _modules){
  20. modules.push(_modules[m]);
  21. }
  22. var record, moduleId, module;
  23. for(var i=0, l=modules.length; i<l; i++) {
  24. record = modules[i];
  25. if(typeof record.module === 'function') {
  26. module = record.module(record.opts, consoleService);
  27. } else {
  28. module = record.module;
  29. }
  30. moduleId = record.moduleId || module.moduleId;
  31. if(!moduleId) {
  32. logger.warn('ignore an unknown module.');
  33. continue;
  34. }
  35. consoleService.register(moduleId, module);
  36. self.modules.push(module);
  37. }
  38. };
  39. pro.startModules = function(modules, cb) {
  40. // invoke the start lifecycle method of modules
  41. if(!modules) {
  42. return;
  43. }
  44. startModule(null, modules, 0, cb);
  45. };
  46. /**
  47. * Append the default system admin modules
  48. */
  49. pro.registerDefaultModules = function(isMaster, app, closeWatcher) {
  50. if(!closeWatcher) {
  51. if(isMaster) {
  52. app.registerAdmin(require('../modules/masterwatcher'), {app: app});
  53. } else {
  54. app.registerAdmin(require('../modules/monitorwatcher'), {app: app});
  55. }
  56. }
  57. app.registerAdmin(admin.modules.watchServer,{app:app});
  58. app.registerAdmin(require('../modules/console'), {app: app, starter: starter});
  59. if(app.enabled('systemMonitor')) {
  60. app.registerAdmin(admin.modules.systemInfo);
  61. app.registerAdmin(admin.modules.nodeInfo);
  62. app.registerAdmin(admin.modules.monitorLog, {path: pathUtil.getLogPath(app.getBase())});
  63. app.registerAdmin(admin.modules.scripts, {app:app, path: pathUtil.getScriptPath(app.getBase())});
  64. if(os.platform() !== Constants.PLATFORM.WIN) {
  65. app.registerAdmin(admin.modules.profiler);
  66. }
  67. }
  68. };
  69. var startModule = function(err, modules, index, cb) {
  70. if(err || index >= modules.length) {
  71. utils.invokeCallback(cb, err);
  72. return;
  73. }
  74. var module = modules[index];
  75. if(module && typeof module.start === 'function') {
  76. module.start(function(err) {
  77. startModule(err, modules, index + 1, cb);
  78. });
  79. } else {
  80. startModule(err, modules, index + 1, cb);
  81. }
  82. };