diff --git a/message_handler.go b/message_handler.go new file mode 100644 index 0000000..e8d0594 --- /dev/null +++ b/message_handler.go @@ -0,0 +1,36 @@ +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, + } +}