dir : node/node.go
이미 실행 중이거나 닫힌 상태면 에러
...
switch n.state {
case runningState:
n.lock.Unlock()
return ErrNodeRunning
case closedState:
n.lock.Unlock()
return ErrNodeStopped
}
n.state = runningState
open endpoint
// server를 start
err := n.openEndpoints()
lifecycle을 복사해 각각 Start()
lifecycles := make([]Lifecycle, len(n.lifecycles))
copy(lifecycles, n.lifecycles)
...
for _, lifecycle := range lifecycles {
if err = lifecycle.Start(); err != nil {
break
}
started = append(started, lifecycle)
}
error check
if err != nil {
n.stopServices(started)
n.doClose(nil)
}
return err
utils.StartNode()