pomelo原始碼分析(1)

2021-08-29 01:20:44 字數 2920 閱讀 7520

首先我們來分析一下()

;

// 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 指...