| 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 |