首先我們來分析一下()
;
// at pinus.ts
(opts ?
繼續往下看
init
(opts ?
;let base = opts.base || process.
cwd();
this
.set
(constants.
reserved
.base
, base)
;this
.base = base;
defaultconfiguration
(this);
this
.state =
state_inited
; logger.
info(,
this
.getserverid()
);}export
function
defaultconfiguration
可以看到 最後初始化其實幹了這些事 我們來依次分析一下。
設定環境
往下看**
letloadmaster
=function
;(key: string, val: string, reload =
false
)// 把解析結果存放到map裡
this
.set
(key, file);}
else
if(fs.
existssync
(presentpath)
)elseif(
!!realpath &&
!!reload)})
;}}get
(constants.
reserved
.master);
好了,我們現在知道了這句**就是載入/config/master.json的配置,並放到key為constants.reserved.master的map裡
letloadservers
=function
=, slist, i, l, server;
for(
let servertype in servers)
servermap[server.id]
= server;
if(server.wsport)}}
set(constants.
keywords
.server_map
, servermap);}
;程序伺服器啟動命令
根據檔案/config/log4js.json來配置自定義日誌
載入lifecycle檔案
初始化完成後
// at aplication.ts
start
(cb ?
:(err ?
: error , result ?
:void
)=>
void
)let self =
this
;startbytype
(self,
function()
else
else})
;}})
;};optlifecycles
(self.usedplugins, constants.
lifecycle
.before_startup
, self,
function
(err)
else})
;});
}
通過**可以看出,我們可以看出呼叫流程如下:
startup
export
function
startbytype
(err?
: error)
=>
void
)else
}else
else}}
當呼叫utils.invokecallback(cb),進入流程2
export
function
loaddefaultcomponents
else
ifisfrontend()
)else
}load
get(
'backendsessionconfig'))
;load
get(
'channelconfig'))
;load
get(
'serverconfig'))
;}load
get(
'monitorconfig'))
;}export
function
optcomponents
(comps: icomponent[
], method: string, cb:
(err?
: error)
=>
void
)else},
function
(err: error)
else
} utils.
invokecallback
(cb, err);}
);}
// at starter.ts
export
function
runservers
break
;default
:getserverfromconfig
(condition);if
(!!server)
else}}
}
可以看到,當condition為constants.reserved.all時,會依次啟動所有服務。 pomelo原始碼分析 一
var pomelo require pomelo route configures filter configures process.on uncaughtexception function err 注意 在webstorm下除錯,可能因為工作目錄的設定原因會導致應用的執行路徑問題,導致無法讀...
pomelo原始碼分析(三)
param cb callback function if this.state state inited this.loaddefaultcomponents var self this this.optcomponents start function err api private var p...
cvDilate 原始碼分析 1
在cv.h檔案中對cvdilate的定義如下 cvapi void cvdilate const cvarr src,cvarr dst,iplconvkernel element cv default null int iterations cv default 1 iplconvkernel 指...