aboutsummaryrefslogtreecommitdiff
path: root/src/gnunet/message/message.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnunet/message/message.go')
-rw-r--r--src/gnunet/message/message.go25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/gnunet/message/message.go b/src/gnunet/message/message.go
index 4dfa8b3..946dd6e 100644
--- a/src/gnunet/message/message.go
+++ b/src/gnunet/message/message.go
@@ -20,6 +20,7 @@ package message
20 20
21import ( 21import (
22 "errors" 22 "errors"
23 "gnunet/enums"
23 24
24 "github.com/bfix/gospel/data" 25 "github.com/bfix/gospel/data"
25) 26)
@@ -33,8 +34,12 @@ var (
33 34
34// Message is an interface for all GNUnet-specific messages. 35// Message is an interface for all GNUnet-specific messages.
35type Message interface { 36type Message interface {
36 // Header of message 37
37 Header() *Header 38 // Size returns the size of the full message
39 Size() uint16
40
41 // Type returns the message type (defines the layout of the body data)
42 Type() enums.MsgType
38 43
39 // String returns a human-readable message 44 // String returns a human-readable message
40 String() string 45 String() string
@@ -42,30 +47,30 @@ type Message interface {
42 47
43//---------------------------------------------------------------------- 48//----------------------------------------------------------------------
44 49
45// Header encapsulates the common part of all GNUnet messages (at the 50// MsgHeader encapsulates the common part of all GNUnet messages (at the
46// beginning of the data). 51// beginning of the data).
47type Header struct { 52type MsgHeader struct {
48 MsgSize uint16 `order:"big"` 53 MsgSize uint16 `order:"big"`
49 MsgType uint16 `order:"big"` 54 MsgType enums.MsgType `order:"big"`
50} 55}
51 56
52// Size returns the total size of the message (header + body) 57// Size returns the total size of the message (header + body)
53func (mh *Header) Size() uint16 { 58func (mh *MsgHeader) Size() uint16 {
54 return mh.MsgSize 59 return mh.MsgSize
55} 60}
56 61
57// Type returns the message type (defines the layout of the body data) 62// Type returns the message type (defines the layout of the body data)
58func (mh *Header) Type() uint16 { 63func (mh *MsgHeader) Type() enums.MsgType {
59 return mh.MsgType 64 return mh.MsgType
60} 65}
61 66
62// GetMsgHeader returns the header of a message from a byte array (as the 67// GetMsgHeader returns the header of a message from a byte array (as the
63// serialized form). 68// serialized form).
64func GetMsgHeader(b []byte) (mh *Header, err error) { 69func GetMsgHeader(b []byte) (mh *MsgHeader, err error) {
65 if b == nil || len(b) < 4 { 70 if b == nil || len(b) < 4 {
66 return nil, ErrMsgHeaderTooSmall 71 return nil, ErrMsgHeaderTooSmall
67 } 72 }
68 mh = new(Header) 73 mh = new(MsgHeader)
69 err = data.Unmarshal(mh, b) 74 err = data.Unmarshal(mh, b)
70 return 75 return
71} 76}