moduleUtil.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. if(os.platform() !== Constants.PLATFORM.WIN) {
  61. app.registerAdmin(admin.modules.systemInfo);
  62. app.registerAdmin(admin.modules.nodeInfo);
  63. }
  64. app.registerAdmin(admin.modules.monitorLog, {path: pathUtil.getLogPath(app.getBase())});
  65. app.registerAdmin(admin.modules.scripts, {app:app, path: pathUtil.getScriptPath(app.getBase())});
  66. if(os.platform() !== Constants.PLATFORM.WIN) {
  67. app.registerAdmin(admin.modules.profiler);
  68. }
  69. }
  70. };
  71. var startModule = function(err, modules, index, cb) {
  72. if(err || index >= modules.length) {
  73. utils.invokeCallback(cb, err);
  74. return;
  75. }
  76. var module = modules[index];
  77. if(module && typeof module.start === 'function') {
  78. module.start(function(err) {
  79. startModule(err, modules, index + 1, cb);
  80. });
  81. } else {
  82. startModule(err, modules, index + 1, cb);
  83. }
  84. };