| Index: mojo/system/message_in_transit.cc
|
| diff --git a/mojo/system/message_in_transit.cc b/mojo/system/message_in_transit.cc
|
| index ba059575bfd133308eddfe9085f5f17be0084089..591f68a0b521b6b17192a8dd6724c89a54f76665 100644
|
| --- a/mojo/system/message_in_transit.cc
|
| +++ b/mojo/system/message_in_transit.cc
|
| @@ -10,8 +10,8 @@
|
| #include <new>
|
|
|
| #include "base/basictypes.h"
|
| +#include "base/compiler_specific.h"
|
| #include "base/logging.h"
|
| -#include "build/build_config.h"
|
| #include "mojo/system/limits.h"
|
|
|
| namespace mojo {
|
| @@ -27,14 +27,24 @@ COMPILE_ASSERT(sizeof(MessageInTransit) %
|
| MessageInTransit::kMessageAlignment == 0,
|
| sizeof_MessageInTransit_not_a_multiple_of_alignment);
|
|
|
| -// C++ requires that storage be declared (in a single compilation unit), but
|
| -// MSVS isn't standards-conformant and doesn't handle this correctly.
|
| -#if !defined(COMPILER_MSVC)
|
| -const size_t MessageInTransit::kMessageAlignment;
|
| -#endif
|
| +STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::Type
|
| + MessageInTransit::kTypeMessagePipeEndpoint;
|
| +STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::Type
|
| + MessageInTransit::kTypeMessagePipe;
|
| +STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::Type
|
| + MessageInTransit::TYPE_CHANNEL;
|
| +STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::Subtype
|
| + MessageInTransit::kSubtypeMessagePipeEndpointData;
|
| +STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::Subtype
|
| + MessageInTransit::kSubtypeMessagePipePeerClosed;
|
| +STATIC_CONST_MEMBER_DEFINITION const MessageInTransit::EndpointId
|
| + MessageInTransit::kInvalidEndpointId;
|
| +STATIC_CONST_MEMBER_DEFINITION const size_t MessageInTransit::kMessageAlignment;
|
|
|
| // static
|
| -MessageInTransit* MessageInTransit::Create(const void* bytes,
|
| +MessageInTransit* MessageInTransit::Create(Type type,
|
| + Subtype subtype,
|
| + const void* bytes,
|
| uint32_t num_bytes) {
|
| const size_t size_with_header = sizeof(MessageInTransit) + num_bytes;
|
| const size_t size_with_header_and_padding =
|
| @@ -46,7 +56,8 @@ MessageInTransit* MessageInTransit::Create(const void* bytes,
|
|
|
| // The buffer consists of the header (a |MessageInTransit|, constructed using
|
| // a placement new), followed by the data, followed by padding (of zeros).
|
| - MessageInTransit* rv = new (buffer) MessageInTransit(num_bytes);
|
| + MessageInTransit* rv =
|
| + new (buffer) MessageInTransit(num_bytes, type, subtype);
|
| memcpy(buffer + sizeof(MessageInTransit), bytes, num_bytes);
|
| memset(buffer + size_with_header, 0,
|
| size_with_header_and_padding - size_with_header);
|
|
|