MCPcopy Create free account
hub / github.com/OpenPrinting/goipp / encode

Method encode

encoder.go:25–67  ·  view source on GitHub ↗

Encode the message

(m *Message)

Source from the content-addressed store, hash-verified

23
24// Encode the message
25func (me *messageEncoder) encode(m *Message) error {
26 // Wire format:
27 //
28 // 2 bytes: Version
29 // 2 bytes: Code (Operation or Status)
30 // 4 bytes: RequestID
31 // variable: attributes
32 // 1 byte: TagEnd
33
34 // Encode message header
35 var err error
36 err = me.encodeU16(uint16(m.Version))
37 if err == nil {
38 err = me.encodeU16(uint16(m.Code))
39 }
40 if err == nil {
41 err = me.encodeU32(uint32(m.RequestID))
42 }
43
44 // Encode attributes
45 for _, grp := range m.AttrGroups() {
46 err = me.encodeTag(grp.Tag)
47 if err == nil {
48 for _, attr := range grp.Attrs {
49 if attr.Name == "" {
50 err = errors.New("Attribute without name")
51 } else {
52 err = me.encodeAttr(attr, true)
53 }
54 }
55 }
56
57 if err != nil {
58 break
59 }
60 }
61
62 if err == nil {
63 err = me.encodeTag(TagEnd)
64 }
65
66 return err
67}
68
69// Encode attribute
70func (me *messageEncoder) encodeAttr(attr Attribute, checkTag bool) error {

Callers 1

EncodeMethod · 0.95

Calls 5

encodeU16Method · 0.95
encodeU32Method · 0.95
encodeTagMethod · 0.95
encodeAttrMethod · 0.95
AttrGroupsMethod · 0.80

Tested by

no test coverage detected