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
2 years ago
|
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))
|
||
|
}
|