設計と実装
● Client側の実装
○ Client側の実装としては、unix domain socketによる接続を行いGoのInterfaceの実装を生かしたメッセージ
の作成を行っています。
○ Bodyをメッセージを書き込むInterfaceとして定義し、各ヘッダーが持つ構造体ごとの
writeTo()を作成する事で
設計しやすく、違いを持てるようにしています。
Nebura(Client) process
type Body interface {
writeTo() ([]byte, error)
}
type ApiHeader struct {
Len uint16
Type uint8
Body Body
}
func (api *ApiHeader) writeTo()
func (n *NclientRouteAdd)
writeTo()
…
↓
sendNclientAPI() {
api := &ApiHeader{
…
Body: body,
}
buf, _ := api.writeTo()
}