From f2a5cc60228a385ea995c183e53cd33498b2245e Mon Sep 17 00:00:00 2001 From: "darin@chromium.org" Date: Tue, 24 Sep 2013 04:36:43 +0000 Subject: Remove now defunct MessageBuilder class. R=ben@chromium.org Review URL: https://codereview.chromium.org/23439010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224893 0039d316-1c4b-4281-b951-d872f2087c98 --- mojo/mojo.gyp | 31 ----- mojo/public/libs/message/README | 40 ------ mojo/public/libs/message/message.cc | 15 --- mojo/public/libs/message/message.h | 57 -------- mojo/public/libs/message/message_builder.cc | 189 --------------------------- mojo/public/libs/message/message_builder.h | 70 ---------- mojo/public/libs/message/message_unittest.cc | 83 ------------ 7 files changed, 485 deletions(-) delete mode 100644 mojo/public/libs/message/README delete mode 100644 mojo/public/libs/message/message.cc delete mode 100644 mojo/public/libs/message/message.h delete mode 100644 mojo/public/libs/message/message_builder.cc delete mode 100644 mojo/public/libs/message/message_builder.h delete mode 100644 mojo/public/libs/message/message_unittest.cc (limited to 'mojo') diff --git a/mojo/mojo.gyp b/mojo/mojo.gyp index e323d28..2cd3d5c 100644 --- a/mojo/mojo.gyp +++ b/mojo/mojo.gyp @@ -13,37 +13,6 @@ { 'target_name': 'mojo', 'type': 'none', - 'dependencies': [ - 'mojo_message', - ], - }, - { - 'target_name': 'mojo_message', - 'type': 'static_library', - 'include_dirs': [ - '..', - ], - 'sources': [ - 'public/libs/message/message.cc', - 'public/libs/message/message.h', - 'public/libs/message/message_builder.cc', - 'public/libs/message/message_builder.h', - ], - }, - { - 'target_name': 'mojo_unittests', - 'type': 'executable', - 'dependencies': [ - 'mojo_message', - '../base/base.gyp:run_all_unittests', - '../testing/gtest.gyp:gtest', - ], - 'include_dirs': [ - '..' - ], - 'sources': [ - 'public/libs/message/message_unittest.cc', - ], }, ], } diff --git a/mojo/public/libs/message/README b/mojo/public/libs/message/README deleted file mode 100644 index 0b73e7d..0000000 --- a/mojo/public/libs/message/README +++ /dev/null @@ -1,40 +0,0 @@ -MESSAGE FORMAT -============== - -A Mojo IPC message resembles a property bag, with ordinals as property names. - -Message: - [ MessageSize | MessageName | Field_1 | Field_2 | ... | Field_N ] - -MessageSize: - [ U32 ] - -MessageName: - [ U32 ] - -Field: - [ FieldHeader | FieldValue ] - -FieldHeader: - [ FieldName | FieldType ] - -FieldName: - [ U16 ] - -FieldType: - [ U14 | FieldClass ] - -FieldClass: - [ U2 ] - - 01 - FieldValue is a 32-bit value (U32) - 10 - FieldValue is a 64-bit value (U64) - 11 - FieldValue is a variable-length array - -FieldValue: - [ U32 ] - [ U64 ] - [ FieldSize | FieldBytes ] - -FieldSize: - [ U32 ] diff --git a/mojo/public/libs/message/message.cc b/mojo/public/libs/message/message.cc deleted file mode 100644 index 933ea51..0000000 --- a/mojo/public/libs/message/message.cc +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2013 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 "mojo/public/libs/message/message.h" - -namespace mojo { - -Message::Message() { -} - -Message::~Message() { -} - -} // namespace mojo diff --git a/mojo/public/libs/message/message.h b/mojo/public/libs/message/message.h deleted file mode 100644 index 94d52e6..0000000 --- a/mojo/public/libs/message/message.h +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 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. - -#ifndef MOJO_PUBLIC_LIBS_MESSAGE_MESSAGE_H_ -#define MOJO_PUBLIC_LIBS_MESSAGE_MESSAGE_H_ - -#include - -#include - -#include "mojo/public/system/core.h" - -namespace mojo { - -enum MessageFieldClass { - kMessageFieldClass_U32 = 0x1, - kMessageFieldClass_U64 = 0x2, - kMessageFieldClass_Array = 0x3, -}; - -enum MessageFieldType { - kMessageFieldType_Bool = 0x1 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Int8 = 0x2 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Int16 = 0x3 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Int32 = 0x4 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Int64 = 0x5 << 2 | kMessageFieldClass_U64, - kMessageFieldType_Uint8 = 0x6 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Uint16 = 0x7 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Uint32 = 0x8 << 2 | kMessageFieldClass_U32, - kMessageFieldType_Uint64 = 0x9 << 2 | kMessageFieldClass_U64, - kMessageFieldType_Float = 0xA << 2 | kMessageFieldClass_U32, - kMessageFieldType_Double = 0xB << 2 | kMessageFieldClass_U64, - kMessageFieldType_String = 0xC << 2 | kMessageFieldClass_Array, - kMessageFieldType_Bytes = 0xD << 2 | kMessageFieldClass_Array, - kMessageFieldType_Handle = 0xE << 2 | kMessageFieldClass_U32, - kMessageFieldType_Message = 0xF << 2 | kMessageFieldClass_Array, -}; - -class Message { - public: - Message(); - ~Message(); - - const std::vector& data() const { return data_; } - const std::vector& handles() const { return handles_; } - - private: - friend class MessageBuilder; - - std::vector data_; - std::vector handles_; -}; - -} // namespace mojo - -#endif // MOJO_PUBLIC_LIBS_MESSAGE_MESSAGE_H_ diff --git a/mojo/public/libs/message/message_builder.cc b/mojo/public/libs/message/message_builder.cc deleted file mode 100644 index 1115ee0..0000000 --- a/mojo/public/libs/message/message_builder.cc +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2013 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 "mojo/public/libs/message/message_builder.h" - -#include -#include - -#include - -#include "base/logging.h" -#include "mojo/public/libs/message/message.h" - -namespace mojo { -namespace { - -const size_t kAlignment = 8U; -const size_t kMessageHeaderSize = 8U; - -} // namespace - -MessageBuilder::MessageBuilder() { -} - -MessageBuilder::~MessageBuilder() { -} - -bool MessageBuilder::Initialize(uint32_t message_name) { - uint32_t message_header[2] = { - 0, // Length in bytes to be filled out in Finish. - message_name - }; - COMPILE_ASSERT(kMessageHeaderSize == sizeof(message_header), - unexpected_message_header_size); - - return AppendRawBytes(&message_header, sizeof(message_header)); -} - -bool MessageBuilder::Append(uint16_t name, int8_t value) { - return AppendU32(name, kMessageFieldType_Int8, static_cast(value)); -} - -bool MessageBuilder::Append(uint16_t name, int16_t value) { - return AppendU32(name, kMessageFieldType_Int16, static_cast(value)); -} - -bool MessageBuilder::Append(uint16_t name, int32_t value) { - return AppendU32(name, kMessageFieldType_Int32, static_cast(value)); -} - -bool MessageBuilder::Append(uint16_t name, int64_t value) { - return AppendU64(name, kMessageFieldType_Int64, static_cast(value)); -} - -bool MessageBuilder::Append(uint16_t name, uint8_t value) { - return AppendU32(name, kMessageFieldType_Uint8, value); -} - -bool MessageBuilder::Append(uint16_t name, uint16_t value) { - return AppendU32(name, kMessageFieldType_Uint16, value); -} - -bool MessageBuilder::Append(uint16_t name, uint32_t value) { - return AppendU32(name, kMessageFieldType_Uint32, value); -} - -bool MessageBuilder::Append(uint16_t name, uint64_t value) { - return AppendU64(name, kMessageFieldType_Uint64, value); -} - -bool MessageBuilder::Append(uint16_t name, const std::string& value) { - return AppendArray(name, kMessageFieldType_String, value.data(), - value.size()); -} - -bool MessageBuilder::Append(uint16_t name, const void* bytes, - size_t num_bytes) { - return AppendArray(name, kMessageFieldType_Bytes, bytes, num_bytes); -} - -bool MessageBuilder::Append(uint16_t name, Handle handle) { - uint32_t index = static_cast(handles_.size()); - - if (!AppendU32(name, kMessageFieldType_Handle, index)) - return false; - - handles_.push_back(handle); - - // TODO(darin): Should we even worry about memory allocation failure? - return handles_.size() == index + 1; -} - -bool MessageBuilder::Append(uint16_t name, const Message& message) { - if (!AppendArray(name, kMessageFieldType_Message, &message.data()[0], - message.data().size())) - return false; - - size_t size_before = handles_.size(); - handles_.insert(handles_.end(), - message.handles().begin(), - message.handles().end()); - - // TODO(darin): Should we even worry about memory allocation failure? - return handles_.size() == size_before + message.handles().size(); -} - -bool MessageBuilder::Finish(Message* message) { - if (data_.empty()) - return false; - - // Initialize should have been called. - DCHECK(data_.size() >= kMessageHeaderSize); - - uint32_t payload_size = - static_cast(data_.size() - sizeof(uint32_t)); - - // Stamp payload size into the message. - memcpy(&data_[0], &payload_size, sizeof(payload_size)); - - message->data_.swap(data_); - message->handles_.swap(handles_); - return true; -} - -bool MessageBuilder::AppendU32(uint16_t name, MessageFieldType field_type, - uint32_t value) { - return AppendHeader(name, field_type) && - AppendRawBytes(&value, sizeof(value)); -} - -bool MessageBuilder::AppendU64(uint16_t name, MessageFieldType field_type, - uint64_t value) { - // Insert padding to achieve 8-byte alignment. - return AppendHeader(name, field_type) && - AppendPadding(4U) && - AppendRawBytes(&value, sizeof(value)); -} - -bool MessageBuilder::AppendArray(uint16_t name, MessageFieldType field_type, - const void* bytes, size_t num_bytes) { - if (num_bytes > std::numeric_limits::max()) - return false; - uint32_t size = static_cast(num_bytes); - - // Append padding to achieve 8-byte alignment. - size_t padding_size = kAlignment - num_bytes % kAlignment; - - return AppendHeader(name, field_type) && - AppendRawBytes(&size, sizeof(size)) && - AppendRawBytes(bytes, size) && - AppendPadding(padding_size); -} - -bool MessageBuilder::AppendHeader(uint16_t name, MessageFieldType field_type) { - // Initialize should have been called. - DCHECK(data_.size() >= kMessageHeaderSize); - - uint32_t header = static_cast(name) << 16 | - static_cast(field_type); - return AppendRawBytes(&header, sizeof(header)); -} - -bool MessageBuilder::AppendPadding(size_t num_bytes) { - if (num_bytes == 0) - return true; - DCHECK(num_bytes < kAlignment); - - const uint8_t kNulls[kAlignment - 1] = { 0 }; - return AppendRawBytes(kNulls, num_bytes); -} - -bool MessageBuilder::AppendRawBytes(const void* bytes, size_t num_bytes) { - if (!num_bytes) - return true; - - const uint8_t* data_start = static_cast(bytes); - const uint8_t* data_end = data_start + num_bytes; - - size_t size_before = data_.size(); - - // TODO(darin): Call reserve() here? - data_.insert(data_.end(), data_start, data_end); - - // TODO(darin): Should we even worry about memory allocation failure? - return data_.size() == size_before + num_bytes; -} - -} // namespace mojo diff --git a/mojo/public/libs/message/message_builder.h b/mojo/public/libs/message/message_builder.h deleted file mode 100644 index 671499b..0000000 --- a/mojo/public/libs/message/message_builder.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2013 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. - -#ifndef MOJO_PUBLIC_LIBS_MESSAGE_MESSAGE_BUIDER_H_ -#define MOJO_PUBLIC_LIBS_MESSAGE_MESSAGE_BUIDER_H_ - -#include - -#include -#include - -#include "mojo/public/libs/message/message.h" - -namespace mojo { - -class MessageBuilder { - public: - MessageBuilder(); - ~MessageBuilder(); - - bool Initialize(uint32_t message_name); - - bool Append(uint16_t name, bool value); - - bool Append(uint16_t name, int8_t value); - bool Append(uint16_t name, int16_t value); - bool Append(uint16_t name, int32_t value); - bool Append(uint16_t name, int64_t value); - - bool Append(uint16_t name, uint8_t value); - bool Append(uint16_t name, uint16_t value); - bool Append(uint16_t name, uint32_t value); - bool Append(uint16_t name, uint64_t value); - - bool Append(uint16_t name, float value); - bool Append(uint16_t name, double value); - - bool Append(uint16_t name, const std::string& value); - bool Append(uint16_t name, const void* bytes, size_t num_bytes); - - template - bool Append(uint16_t name, const C& container) { - return Append(name, container.data(), container.size()); - } - - // TODO(darin): Add support for arrays of other types. - - bool Append(uint16_t name, Handle handle); - bool Append(uint16_t name, const Message& message); - - bool Finish(Message* message); - - private: - bool AppendU32(uint16_t name, MessageFieldType field_type, uint32_t value); - bool AppendU64(uint16_t name, MessageFieldType field_type, uint64_t value); - bool AppendArray(uint16_t name, MessageFieldType field_type, - const void* bytes, size_t num_bytes); - - bool AppendHeader(uint16_t name, MessageFieldType field_type); - bool AppendPadding(size_t num_bytes); - bool AppendRawBytes(const void* bytes, size_t num_bytes); - - std::vector data_; - std::vector handles_; -}; - -} // namespace mojo - -#endif // MOJO_PUBLIC_LIBS_MESSAGE_BUILDER_H_ diff --git a/mojo/public/libs/message/message_unittest.cc b/mojo/public/libs/message/message_unittest.cc deleted file mode 100644 index 209dee8..0000000 --- a/mojo/public/libs/message/message_unittest.cc +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2013 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 "mojo/public/libs/message/message.h" - -#include - -#include "mojo/public/libs/message/message_builder.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace mojo { - -TEST(Message, Empty) { - Message message; - EXPECT_EQ(0U, message.data().size()); -} - -TEST(Message, Builder_Empty) { - MessageBuilder builder; - EXPECT_TRUE(builder.Initialize(1)); - - Message message; - EXPECT_TRUE(builder.Finish(&message)); - - EXPECT_EQ(message.data().size(), 8U); -} - -TEST(Message, Builder_Basic) { - MessageBuilder builder; - EXPECT_TRUE(builder.Initialize(1)); - - EXPECT_TRUE(builder.Append(1, 2U)); - - Message message; - EXPECT_TRUE(builder.Finish(&message)); - - EXPECT_EQ(message.data().size(), 8U + 8U); -} - -TEST(Message, Builder_BasicPair) { - MessageBuilder builder; - EXPECT_TRUE(builder.Initialize(1)); - - EXPECT_TRUE(builder.Append(1, 100)); - EXPECT_TRUE(builder.Append(2, 200)); - - Message message; - EXPECT_TRUE(builder.Finish(&message)); - - EXPECT_EQ(message.data().size(), 8U + 8U + 8U); -} - -TEST(Message, Builder_BasicString) { - MessageBuilder builder; - EXPECT_TRUE(builder.Initialize(1)); - - EXPECT_TRUE(builder.Append(1, 100)); - EXPECT_TRUE(builder.Append(2, 200)); - EXPECT_TRUE(builder.Append(3, std::string("hello world"))); - - Message message; - EXPECT_TRUE(builder.Finish(&message)); - - EXPECT_EQ(message.data().size(), 8U + 8U + 8U + 8U + 16U); -} - -TEST(Message, Builder_BasicHandle) { - MessageBuilder builder; - EXPECT_TRUE(builder.Initialize(1)); - - mojo::Handle handle = { 1 }; - - EXPECT_TRUE(builder.Append(1, handle)); - - Message message; - EXPECT_TRUE(builder.Finish(&message)); - - EXPECT_EQ(message.data().size(), 8U + 8U); - EXPECT_EQ(message.handles().size(), 1U); -} - -} // namespace mojo -- cgit v1.1