diff options
Diffstat (limited to 'src/gnunet/message/message.go')
-rw-r--r-- | src/gnunet/message/message.go | 25 |
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 | ||
21 | import ( | 21 | import ( |
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. |
35 | type Message interface { | 36 | type 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). |
47 | type Header struct { | 52 | type 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) |
53 | func (mh *Header) Size() uint16 { | 58 | func (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) |
58 | func (mh *Header) Type() uint16 { | 63 | func (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). |
64 | func GetMsgHeader(b []byte) (mh *Header, err error) { | 69 | func 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 | } |