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

Unified Diff: third_party/mojo/src/mojo/public/go/bindings/decoder.go

Issue 901843003: Update mojo sdk to rev 8d45c89c30b230843c5bd6dd0693a555750946c0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Partial revert of https://codereview.chromium.org/899993002/ Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/go/bindings/decoder.go
diff --git a/third_party/mojo/src/mojo/public/go/bindings/decoder.go b/third_party/mojo/src/mojo/public/go/bindings/decoder.go
index 2dccd0ad99230ee81f32ee533d341d189c95a1ba..3f3cce9bca824f4f4378e12053dbb7809c0699dc 100644
--- a/third_party/mojo/src/mojo/public/go/bindings/decoder.go
+++ b/third_party/mojo/src/mojo/public/go/bindings/decoder.go
@@ -185,6 +185,7 @@ func (d *Decoder) ReadUint8() (uint8, error) {
if err := ensureElementBitSizeAndCapacity(d.state(), 8); err != nil {
return 0, err
}
+ d.state().alignOffsetToBytes()
value := d.buf[d.state().offset]
d.state().skipBytes(1)
d.state().elementsProcessed++
@@ -202,6 +203,7 @@ func (d *Decoder) ReadUint16() (uint16, error) {
if err := ensureElementBitSizeAndCapacity(d.state(), 16); err != nil {
return 0, err
}
+ d.state().alignOffsetToBytes()
d.state().offset = align(d.state().offset, 2)
value := binary.LittleEndian.Uint16(d.buf[d.state().offset:])
d.state().skipBytes(2)
@@ -220,6 +222,7 @@ func (d *Decoder) ReadUint32() (uint32, error) {
if err := ensureElementBitSizeAndCapacity(d.state(), 32); err != nil {
return 0, err
}
+ d.state().alignOffsetToBytes()
d.state().offset = align(d.state().offset, 4)
value := binary.LittleEndian.Uint32(d.buf[d.state().offset:])
d.state().skipBytes(4)
@@ -238,6 +241,7 @@ func (d *Decoder) ReadUint64() (uint64, error) {
if err := ensureElementBitSizeAndCapacity(d.state(), 64); err != nil {
return 0, err
}
+ d.state().alignOffsetToBytes()
d.state().offset = align(d.state().offset, 8)
value := binary.LittleEndian.Uint64(d.buf[d.state().offset:])
d.state().skipBytes(8)
@@ -300,16 +304,59 @@ func (d *Decoder) ReadPointer() (uint64, error) {
if newEnd%8 != 0 {
return 0, fmt.Errorf("incorrect pointer data alignment: %d", newEnd)
}
- d.claimData(d.end - int(newEnd))
+ d.claimData(int(newEnd) - d.end)
return pointer, nil
}
-// ReadMessagePipeHandle reads a message pipe handle.
-func (d *Decoder) ReadMessagePipeHandle() (system.MessagePipeHandle, error) {
+// ReadUntypedHandle reads an untyped handle.
+func (d *Decoder) ReadUntypedHandle() (system.UntypedHandle, error) {
handleIndex, err := d.ReadUint32()
if err != nil {
return nil, err
}
- untypedHandle, err := d.claimHandle(int(handleIndex))
- return untypedHandle.ToMessagePipeHandle(), err
+ if handleIndex == ^uint32(0) {
+ return &InvalidHandle{}, nil
+ }
+ return d.claimHandle(int(handleIndex))
+}
+
+// ReadHandle reads a handle.
+func (d *Decoder) ReadHandle() (system.Handle, error) {
+ return d.ReadUntypedHandle()
+}
+
+// ReadMessagePipeHandle reads a message pipe handle.
+func (d *Decoder) ReadMessagePipeHandle() (system.MessagePipeHandle, error) {
+ if handle, err := d.ReadUntypedHandle(); err != nil {
+ return nil, err
+ } else {
+ return handle.ToMessagePipeHandle(), nil
+ }
+}
+
+// ReadConsumerHandle reads a data pipe consumer handle.
+func (d *Decoder) ReadConsumerHandle() (system.ConsumerHandle, error) {
+ if handle, err := d.ReadUntypedHandle(); err != nil {
+ return nil, err
+ } else {
+ return handle.ToConsumerHandle(), nil
+ }
+}
+
+// ReadProducerHandle reads a data pipe producer handle.
+func (d *Decoder) ReadProducerHandle() (system.ProducerHandle, error) {
+ if handle, err := d.ReadUntypedHandle(); err != nil {
+ return nil, err
+ } else {
+ return handle.ToProducerHandle(), nil
+ }
+}
+
+// ReadSharedBufferHandle reads a shared buffer handle.
+func (d *Decoder) ReadSharedBufferHandle() (system.SharedBufferHandle, error) {
+ if handle, err := d.ReadUntypedHandle(); err != nil {
+ return nil, err
+ } else {
+ return handle.ToSharedBufferHandle(), nil
+ }
}
« no previous file with comments | « third_party/mojo/src/mojo/public/dart/src/timer_impl.dart ('k') | third_party/mojo/src/mojo/public/go/bindings/encoder.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698