1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef MOJO_SPY_COMMON_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define MOJO_SPY_COMMON_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <stdint.h>
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo {
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#pragma pack(push, 1)
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Mojo message header structures. These are based off the Mojo spec.
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochenum {
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  kMessageExpectsResponse = 1 << 0,
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  kMessageIsResponse      = 1 << 1
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct MojoCommonHeader {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  uint32_t num_bytes;
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  uint32_t num_fields;
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct MojoMessageHeader : public MojoCommonHeader {
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  uint32_t name;
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  uint32_t flags;
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct MojoRequestHeader : public MojoMessageHeader {
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  uint64_t request_id;
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct MojoMessageData  {
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  MojoRequestHeader header;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#pragma pack(pop)
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace mojo
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // MOJO_SPY_COMMON_H_
44