aboutsummaryrefslogtreecommitdiff
path: root/mojo/edk/system/ports/message.cc
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/edk/system/ports/message.cc')
-rw-r--r--mojo/edk/system/ports/message.cc100
1 files changed, 0 insertions, 100 deletions
diff --git a/mojo/edk/system/ports/message.cc b/mojo/edk/system/ports/message.cc
deleted file mode 100644
index 5d3c000..0000000
--- a/mojo/edk/system/ports/message.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2016 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.
-
-#include <stdlib.h>
-
-#include <limits>
-
-#include "base/logging.h"
-#include "mojo/edk/system/ports/event.h"
-
-namespace mojo {
-namespace edk {
-namespace ports {
-
-// static
-bool Message::Parse(const void* bytes,
- size_t num_bytes,
- size_t* num_header_bytes,
- size_t* num_payload_bytes,
- size_t* num_ports_bytes) {
- if (num_bytes < sizeof(EventHeader))
- return false;
- const EventHeader* header = static_cast<const EventHeader*>(bytes);
- switch (header->type) {
- case EventType::kUser:
- // See below.
- break;
- case EventType::kPortAccepted:
- *num_header_bytes = sizeof(EventHeader);
- break;
- case EventType::kObserveProxy:
- *num_header_bytes = sizeof(EventHeader) + sizeof(ObserveProxyEventData);
- break;
- case EventType::kObserveProxyAck:
- *num_header_bytes =
- sizeof(EventHeader) + sizeof(ObserveProxyAckEventData);
- break;
- case EventType::kObserveClosure:
- *num_header_bytes = sizeof(EventHeader) + sizeof(ObserveClosureEventData);
- break;
- case EventType::kMergePort:
- *num_header_bytes = sizeof(EventHeader) + sizeof(MergePortEventData);
- break;
- default:
- return false;
- }
-
- if (header->type == EventType::kUser) {
- if (num_bytes < sizeof(EventHeader) + sizeof(UserEventData))
- return false;
- const UserEventData* event_data =
- reinterpret_cast<const UserEventData*>(
- reinterpret_cast<const char*>(header + 1));
- if (event_data->num_ports > std::numeric_limits<uint16_t>::max())
- return false;
- *num_header_bytes = sizeof(EventHeader) +
- sizeof(UserEventData) +
- event_data->num_ports * sizeof(PortDescriptor);
- *num_ports_bytes = event_data->num_ports * sizeof(PortName);
- if (num_bytes < *num_header_bytes + *num_ports_bytes)
- return false;
- *num_payload_bytes = num_bytes - *num_header_bytes - *num_ports_bytes;
- } else {
- if (*num_header_bytes != num_bytes)
- return false;
- *num_payload_bytes = 0;
- *num_ports_bytes = 0;
- }
-
- return true;
-}
-
-Message::Message(size_t num_payload_bytes, size_t num_ports)
- : Message(sizeof(EventHeader) + sizeof(UserEventData) +
- num_ports * sizeof(PortDescriptor),
- num_payload_bytes, num_ports * sizeof(PortName)) {
- num_ports_ = num_ports;
-}
-
-Message::Message(size_t num_header_bytes,
- size_t num_payload_bytes,
- size_t num_ports_bytes)
- : start_(nullptr),
- num_header_bytes_(num_header_bytes),
- num_ports_bytes_(num_ports_bytes),
- num_payload_bytes_(num_payload_bytes) {
-}
-
-void Message::InitializeUserMessageHeader(void* start) {
- start_ = static_cast<char*>(start);
- memset(start_, 0, num_header_bytes_);
- GetMutableEventHeader(this)->type = EventType::kUser;
- GetMutableEventData<UserEventData>(this)->num_ports =
- static_cast<uint32_t>(num_ports_);
-}
-
-} // namespace ports
-} // namespace edk
-} // namespace mojo