OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package bindings | 5 package bindings |
6 | 6 |
7 import ( | 7 import ( |
8 "fmt" | 8 "fmt" |
9 | 9 |
10 "mojo/public/go/system" | 10 "mojo/public/go/system" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 } | 61 } |
62 if h.RequestId != 0 { | 62 if h.RequestId != 0 { |
63 if err := encoder.WriteUint64(h.RequestId); err != nil { | 63 if err := encoder.WriteUint64(h.RequestId); err != nil { |
64 return err | 64 return err |
65 } | 65 } |
66 } | 66 } |
67 return encoder.Finish() | 67 return encoder.Finish() |
68 } | 68 } |
69 | 69 |
70 func (h *MessageHeader) Decode(decoder *Decoder) error { | 70 func (h *MessageHeader) Decode(decoder *Decoder) error { |
71 » numFields, err := decoder.StartStruct() | 71 » header, err := decoder.StartStruct() |
72 if err != nil { | 72 if err != nil { |
73 return err | 73 return err |
74 } | 74 } |
| 75 numFields := header.ElementsOrVersion |
75 if numFields < 2 || numFields > 3 { | 76 if numFields < 2 || numFields > 3 { |
76 return fmt.Errorf("Invalid message header: it should have 2 or 3
fileds, but has %d", numFields) | 77 return fmt.Errorf("Invalid message header: it should have 2 or 3
fileds, but has %d", numFields) |
77 } | 78 } |
78 if h.Type, err = decoder.ReadUint32(); err != nil { | 79 if h.Type, err = decoder.ReadUint32(); err != nil { |
79 return err | 80 return err |
80 } | 81 } |
81 if h.Flags, err = decoder.ReadUint32(); err != nil { | 82 if h.Flags, err = decoder.ReadUint32(); err != nil { |
82 return err | 83 return err |
83 } | 84 } |
84 if numFields == 3 { | 85 if numFields == 3 { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 // ParseMessage parses message header from byte buffer with attached handles | 156 // ParseMessage parses message header from byte buffer with attached handles |
156 // and returnes parsed message. | 157 // and returnes parsed message. |
157 func ParseMessage(bytes []byte, handles []system.UntypedHandle) (*Message, error
) { | 158 func ParseMessage(bytes []byte, handles []system.UntypedHandle) (*Message, error
) { |
158 decoder := NewDecoder(bytes, []system.UntypedHandle{}) | 159 decoder := NewDecoder(bytes, []system.UntypedHandle{}) |
159 var header MessageHeader | 160 var header MessageHeader |
160 if err := header.Decode(decoder); err != nil { | 161 if err := header.Decode(decoder); err != nil { |
161 return nil, err | 162 return nil, err |
162 } | 163 } |
163 return newMessage(header, bytes, handles), nil | 164 return newMessage(header, bytes, handles), nil |
164 } | 165 } |
OLD | NEW |