package main import ( "bufio" "bytes" "encoding/binary" "encoding/hex" "os" ) import ( "milter-experiment/logging" ) var ( // Global logger for application wide logging. Not sure if this is a good pattern yet. logger logging.Logger ) func handleMtaConnection(clientConnection *bufio.ReadWriter) { buf := make([]byte, 4096) for { bytesRead, err := clientConnection.Read(buf) if err != nil { logger.Errorln("Error reading from clientConnection:", err.Error()) break } else { logger.Infof("Read %d bytes from connection\n", bytesRead) logger.Debugf("Hexdump of bytes read:\n%s", hex.Dump(buf[0:bytesRead])) // First 4 Bytes will be some integer thing "length" // Let's parse that var packetLength uint32 bytesReader := bytes.NewReader(buf[0:4]) err := binary.Read(bytesReader, binary.BigEndian, &packetLength) if err != nil { logger.Errorln(err.Error()) } logger.Debugf("Parsed length: %d\n", packetLength) } } } func main() { logger = logging.NewLogger(os.Stdout, os.Stderr, logging.DEBUG) runServer() }