1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_INTERNAL_H_
6#define MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_INTERNAL_H_
7
8#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
9
10namespace mojo {
11namespace internal {
12
13#pragma pack(push, 1)
14
15enum {
16  kMessageExpectsResponse = 1 << 0,
17  kMessageIsResponse      = 1 << 1
18};
19
20struct MessageHeader : internal::StructHeader {
21  uint32_t name;
22  uint32_t flags;
23};
24MOJO_COMPILE_ASSERT(sizeof(MessageHeader) == 16, bad_sizeof_MessageHeader);
25
26struct MessageHeaderWithRequestID : MessageHeader {
27  uint64_t request_id;
28};
29MOJO_COMPILE_ASSERT(sizeof(MessageHeaderWithRequestID) == 24,
30                    bad_sizeof_MessageHeaderWithRequestID);
31
32struct MessageData {
33  MessageHeader header;
34};
35
36MOJO_COMPILE_ASSERT(sizeof(MessageData) == sizeof(MessageHeader),
37                    bad_sizeof_MessageData);
38
39#pragma pack(pop)
40
41}  // namespace internal
42}  // namespace mojo
43
44#endif  // MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_INTERNAL_H_
45