package main type ReaderWriter interface { Write(p []byte) (n int, err error) Read(b []byte) (n int, err error) } type Parser interface { ParseBytes(p []byte) (n int, err error) IsMessageAvailable() bool GetNextMessage() (typeByte byte, payload []byte, err error) } type HandlerFunc func(byte, []byte) type MessageHandler struct { WriterReader ReaderWriter Conf MessageHandlerConfig MessageParser Parser handlers map[byte]HandlerFunc } type MessageHandlerConfig struct { } func NewMessageHandlerConfig() *MessageHandlerConfig { return &MessageHandlerConfig{} } func NewMessageHandler(con ReaderWriter, conf MessageHandlerConfig, msgParser Parser) *MessageHandler { return &MessageHandler{ WriterReader: con, Conf: conf, MessageParser: msgParser, } }