/go-hobbits

Go implementation of Hobbits, a modular wire protocol.

Primary LanguageGoApache License 2.0Apache-2.0

Hobbits

Build Status Go Report Card API Reference License

Go implementation of Hobbits, a modular wire protocol.

Installation

go get github.com/renaynay/go-hobbits 

Usage

Encode a message:

var message encoding.Message{
	Version: "0.0",
	Protocol: "RPC",
	Header: []byte("test header"),
	Body: []byte("test body"),
}

encoded, err := encoding.Marshal(message)
if err != nil {
	log.Print(err)
}

fmt.Println(encoded)

Decode a message:

decoded, err := encoding.Unmarshal("EWP 13.05 RPC 16 14\nthis is a headerthis is a body")
if err != nil {
	log.Print(err)
}

fmt.Println(decoded)

Here is a demo echo server:

server := tcp.NewServer("127.0.0.1", 1240)

err := server.Listen(func(conn net.Conn, message encoding.Message) {
    err := server.SendMessage(conn, message)
    if err != nil {
        log.Print(err)
    }
})

log.Print(err)