v0.7.0

Daemon 生命週期

最後更新

本頁說明 Start、Stop、Close 在 server 模式與 client 模式下各自的行為。

生命週期

方法 Server 模式 Client 模式
Start() 不阻塞。重新探測,若另一個 daemon 回應則回傳 ErrAlreadyRunning;移除殘留 socket 檔、開始監聽並在 goroutine 中 accept。監聽中再次呼叫不做事 不做事
Stop() 關閉 listener、等待 accept 迴圈、關閉所有開啟的連線、等待連線 goroutine 不做事
Close() Stop() 後 Store.Close(),錯誤合併回傳 關閉閒置連線
Mode() / Socket() ModeServer / socket 路徑 ModeClient / socket 路徑
Store() 底層 *store.Store nil

Server 模式的 Daemon 在行程內分派呼叫,因此在 Start() 前自己的方法就能使用。Stop() 必須關閉存活連線,否則 client 連線池的閒置連線會讓 serve() 一直卡在 readFrame,Stop() 永遠回不來。

Server process 結束後 client 不會接手;它的呼叫會以撥號錯誤失敗,直到新的 daemon.New 選出新的 server。

相關頁面

EN