You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
995 B
Go
47 lines
995 B
Go
package message
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// Type represents the type of message, which could be Request/Notify/Response/Push
|
|
type Type byte
|
|
|
|
// Message types
|
|
const (
|
|
Request Type = 0x00
|
|
Notify = 0x01
|
|
Response = 0x02
|
|
Push = 0x03
|
|
)
|
|
|
|
var types = map[Type]string{
|
|
Request: "Request",
|
|
Notify: "Notify",
|
|
Response: "Response",
|
|
Push: "Push",
|
|
}
|
|
|
|
func (t Type) String() string {
|
|
return types[t]
|
|
}
|
|
|
|
// Message represents an unmarshaler message or a message which to be marshaled
|
|
type Message struct {
|
|
Type Type // message type (flag)
|
|
ID uint64 // unique id, zero while notify mode
|
|
Route string // route for locating service
|
|
Data []byte // payload
|
|
compressed bool // if message compressed
|
|
}
|
|
|
|
// New returns a new message instance
|
|
func New() *Message {
|
|
return &Message{}
|
|
}
|
|
|
|
// String, implementation of fmt.Stringer interface
|
|
func (m *Message) String() string {
|
|
return fmt.Sprintf("%s %s (%dbytes)", types[m.Type], m.Route, len(m.Data))
|
|
}
|