Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(426)

Side by Side Diff: mojo/public/go/bindings/decoder.go

Issue 948343008: go/bindings: update code to pass structs versions tests (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/go/tests/validation_test.go ('k') | mojo/public/go/bindings/message.go » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "encoding/binary" 8 "encoding/binary"
9 "fmt" 9 "fmt"
10 "math" 10 "math"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 } 118 }
119 if header != mapHeader { 119 if header != mapHeader {
120 return fmt.Errorf("invalid map header: %v", header) 120 return fmt.Errorf("invalid map header: %v", header)
121 } 121 }
122 if err := d.pushState(header, pointerBitSize); err != nil { 122 if err := d.pushState(header, pointerBitSize); err != nil {
123 return err 123 return err
124 } 124 }
125 return nil 125 return nil
126 } 126 }
127 127
128 // StartStruct starts decoding a struct and reads its data header, 128 // StartStruct starts decoding a struct and reads its data header.
129 // returning struct version declared in data header. 129 // Returns the read data header. The caller should check if it is valid.
130 // Note: it doesn't read a pointer to the encoded struct. 130 // Note: it doesn't read a pointer to the encoded struct.
131 // Call |Finish()| after reading all fields. 131 // Call |Finish()| after reading all fields.
132 func (d *Decoder) StartStruct() (uint32, error) { 132 func (d *Decoder) StartStruct() (DataHeader, error) {
133 header, err := d.readDataHeader() 133 header, err := d.readDataHeader()
134 if err != nil { 134 if err != nil {
135 » » return 0, err 135 » » return DataHeader{}, err
136 } 136 }
137 if header.Size < dataHeaderSize { 137 if header.Size < dataHeaderSize {
138 » » return 0, fmt.Errorf("data header size is too small: is %d, but should be at least %d", header.Size, dataHeaderSize) 138 » » return DataHeader{}, fmt.Errorf("data header size(%d) should be at least %d", header.Size, dataHeaderSize)
139 } 139 }
140 if err := d.pushState(header, 0); err != nil { 140 if err := d.pushState(header, 0); err != nil {
141 » » return 0, err 141 » » return DataHeader{}, err
142 } 142 }
143 » return header.ElementsOrVersion, nil 143 » return header, nil
144 } 144 }
145 145
146 func (d *Decoder) readDataHeader() (DataHeader, error) { 146 func (d *Decoder) readDataHeader() (DataHeader, error) {
147 if err := d.claimData(dataHeaderSize); err != nil { 147 if err := d.claimData(dataHeaderSize); err != nil {
148 return DataHeader{}, err 148 return DataHeader{}, err
149 } 149 }
150 oldEnd := d.end - dataHeaderSize 150 oldEnd := d.end - dataHeaderSize
151 header := DataHeader{ 151 header := DataHeader{
152 Size: binary.LittleEndian.Uint32(d.buf[oldEnd:]), 152 Size: binary.LittleEndian.Uint32(d.buf[oldEnd:]),
153 ElementsOrVersion: binary.LittleEndian.Uint32(d.buf[oldEnd+4:]), 153 ElementsOrVersion: binary.LittleEndian.Uint32(d.buf[oldEnd+4:]),
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 } 358 }
359 359
360 // ReadSharedBufferHandle reads a shared buffer handle. 360 // ReadSharedBufferHandle reads a shared buffer handle.
361 func (d *Decoder) ReadSharedBufferHandle() (system.SharedBufferHandle, error) { 361 func (d *Decoder) ReadSharedBufferHandle() (system.SharedBufferHandle, error) {
362 if handle, err := d.ReadUntypedHandle(); err != nil { 362 if handle, err := d.ReadUntypedHandle(); err != nil {
363 return nil, err 363 return nil, err
364 } else { 364 } else {
365 return handle.ToSharedBufferHandle(), nil 365 return handle.ToSharedBufferHandle(), nil
366 } 366 }
367 } 367 }
OLDNEW
« no previous file with comments | « mojo/go/tests/validation_test.go ('k') | mojo/public/go/bindings/message.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698