Index: third_party/mojo/src/mojo/public/go/bindings/message.go |
diff --git a/third_party/mojo/src/mojo/public/go/bindings/message.go b/third_party/mojo/src/mojo/public/go/bindings/message.go |
deleted file mode 100644 |
index 1ce64d9e9f5fee54982c0c6180192342828b7c51..0000000000000000000000000000000000000000 |
--- a/third_party/mojo/src/mojo/public/go/bindings/message.go |
+++ /dev/null |
@@ -1,205 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package bindings |
- |
-import ( |
- "fmt" |
- |
- "mojo/public/go/system" |
-) |
- |
-const ( |
- // Flag for a header of a simple message. |
- MessageNoFlag = 0 |
- |
- // Flag for a header of a message that expected a response. |
- MessageExpectsResponseFlag = 1 << 0 |
- |
- // Flag for a header of a message that is a response. |
- MessageIsResponseFlag = 1 << 1 |
- |
- dataHeaderSize = 8 |
- defaultAlignment = 8 |
- pointerBitSize = 64 |
-) |
- |
-var mapHeader DataHeader |
- |
-func init() { |
- mapHeader = DataHeader{24, 0} |
-} |
- |
-const ( |
- DifferentSizedArraysInMap = "VALIDATION_ERROR_DIFFERENT_SIZED_ARRAYS_IN_MAP" |
- IllegalHandle = "VALIDATION_ERROR_ILLEGAL_HANDLE" |
- IllegalMemoryRange = "VALIDATION_ERROR_ILLEGAL_MEMORY_RANGE" |
- IllegalPointer = "VALIDATION_ERROR_ILLEGAL_POINTER" |
- MessageHeaderInvalidFlags = "VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAGS" |
- MessageHeaderMissingRequestId = "VALIDATION_ERROR_MESSAGE_HEADER_MISSING_REQUEST_ID" |
- MessageHeaderUnknownMethod = "VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD" |
- MisalignedObject = "VALIDATION_ERROR_MISALIGNED_OBJECT" |
- UnexpectedArrayHeader = "VALIDATION_ERROR_UNEXPECTED_ARRAY_HEADER" |
- UnexpectedInvalidHandle = "VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE" |
- UnexpectedNullPointer = "VALIDATION_ERROR_UNEXPECTED_NULL_POINTER" |
- UnexpectedNullUnion = "VALIDATION_ERROR_UNEXPECTED_NULL_UNION" |
- UnexpectedStructHeader = "VALIDATION_ERROR_UNEXPECTED_STRUCT_HEADER" |
-) |
- |
-// ValidationError is an error that can happen during message validation. |
-type ValidationError struct { |
- ErrorCode string |
- Message string |
-} |
- |
-func (e *ValidationError) Error() string { |
- return e.Message |
-} |
- |
-// Payload is an interface implemented by a mojo struct that can encode/decode |
-// itself into mojo archive format. |
-type Payload interface { |
- Encode(encoder *Encoder) error |
- Decode(decoder *Decoder) error |
-} |
- |
-// DataHeader is a header for a mojo complex element. |
-type DataHeader struct { |
- Size uint32 |
- ElementsOrVersion uint32 |
-} |
- |
-// MessageHeader is a header information for a message. |
-type MessageHeader struct { |
- Type uint32 |
- Flags uint32 |
- RequestId uint64 |
-} |
- |
-func (h *MessageHeader) Encode(encoder *Encoder) error { |
- encoder.StartStruct(h.dataSize(), h.version()) |
- if err := encoder.WriteUint32(h.Type); err != nil { |
- return err |
- } |
- if err := encoder.WriteUint32(h.Flags); err != nil { |
- return err |
- } |
- if h.Flags != MessageNoFlag { |
- if err := encoder.WriteUint64(h.RequestId); err != nil { |
- return err |
- } |
- } |
- return encoder.Finish() |
-} |
- |
-func (h *MessageHeader) Decode(decoder *Decoder) error { |
- header, err := decoder.StartStruct() |
- if err != nil { |
- return err |
- } |
- version := header.ElementsOrVersion |
- if version > 1 { |
- return &ValidationError{UnexpectedStructHeader, |
- fmt.Sprintf("invalid message header: it should be of version 0 or 1, but has %d", version), |
- } |
- } |
- expectedSize := uint32(dataHeaderSize + 2*4) |
- if version == 1 { |
- expectedSize += 8 |
- } |
- if expectedSize != header.Size { |
- return &ValidationError{UnexpectedStructHeader, |
- fmt.Sprintf("unexpected struct header size: expected %d, but got %d", expectedSize, header.Size), |
- } |
- } |
- |
- if h.Type, err = decoder.ReadUint32(); err != nil { |
- return err |
- } |
- if h.Flags, err = decoder.ReadUint32(); err != nil { |
- return err |
- } |
- if version == 1 { |
- if h.Flags != MessageExpectsResponseFlag && h.Flags != MessageIsResponseFlag { |
- return &ValidationError{MessageHeaderInvalidFlags, |
- fmt.Sprintf("message header flags(%v) should be MessageExpectsResponseFlag or MessageIsResponseFlag", h.Flags), |
- } |
- } |
- if h.RequestId, err = decoder.ReadUint64(); err != nil { |
- return err |
- } |
- } else { |
- if h.Flags != MessageNoFlag { |
- return &ValidationError{MessageHeaderMissingRequestId, "missing request ID in message header"} |
- } |
- } |
- return decoder.Finish() |
-} |
- |
-func (h *MessageHeader) dataSize() uint32 { |
- var size uint32 |
- size = 2 * 4 |
- if h.Flags != MessageNoFlag { |
- size += 8 |
- } |
- return size |
-} |
- |
-func (h *MessageHeader) version() uint32 { |
- if h.Flags != MessageNoFlag { |
- return 1 |
- } else { |
- return 0 |
- } |
-} |
- |
-// Message is a a raw message to be sent/received from a message pipe handle |
-// which contains a message header. |
-type Message struct { |
- Header MessageHeader |
- Bytes []byte |
- Handles []system.UntypedHandle |
- Payload []byte |
-} |
- |
-func newMessage(header MessageHeader, bytes []byte, handles []system.UntypedHandle) *Message { |
- return &Message{header, bytes, handles, bytes[header.dataSize()+dataHeaderSize:]} |
-} |
- |
-// DecodePayload decodes the provided payload from the message. |
-func (m *Message) DecodePayload(payload Payload) error { |
- decoder := NewDecoder(m.Payload, m.Handles) |
- if err := payload.Decode(decoder); err != nil { |
- return err |
- } |
- return nil |
-} |
- |
-// EncodeMessage returns a message with provided header that has provided |
-// payload encoded in mojo archive format. |
-func EncodeMessage(header MessageHeader, payload Payload) (*Message, error) { |
- encoder := NewEncoder() |
- if err := header.Encode(encoder); err != nil { |
- return nil, err |
- } |
- if err := payload.Encode(encoder); err != nil { |
- return nil, err |
- } |
- if bytes, handles, err := encoder.Data(); err != nil { |
- return nil, err |
- } else { |
- return newMessage(header, bytes, handles), nil |
- } |
-} |
- |
-// ParseMessage parses message header from byte buffer with attached handles |
-// and returnes parsed message. |
-func ParseMessage(bytes []byte, handles []system.UntypedHandle) (*Message, error) { |
- decoder := NewDecoder(bytes, []system.UntypedHandle{}) |
- var header MessageHeader |
- if err := header.Decode(decoder); err != nil { |
- return nil, err |
- } |
- return newMessage(header, bytes, handles), nil |
-} |