diff options
Diffstat (limited to 'mojo/public/cpp/bindings/interface_id.h')
-rw-r--r-- | mojo/public/cpp/bindings/interface_id.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mojo/public/cpp/bindings/interface_id.h b/mojo/public/cpp/bindings/interface_id.h new file mode 100644 index 0000000000..53475d6f78 --- /dev/null +++ b/mojo/public/cpp/bindings/interface_id.h @@ -0,0 +1,35 @@ +// Copyright 2015 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_CPP_BINDINGS_INTERFACE_ID_H_ +#define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ID_H_ + +#include <stdint.h> + +namespace mojo { + +// The size of the type matters because it is directly used in messages. +using InterfaceId = uint32_t; + +// IDs of associated interface can be generated at both sides of the message +// pipe. In order to avoid collision, the highest bit is used as namespace bit: +// at the side where the client-side of the master interface lives, IDs are +// generated with the namespace bit set to 1; at the opposite side IDs are +// generated with the namespace bit set to 0. +const uint32_t kInterfaceIdNamespaceMask = 0x80000000; + +const InterfaceId kMasterInterfaceId = 0x00000000; +const InterfaceId kInvalidInterfaceId = 0xFFFFFFFF; + +inline bool IsMasterInterfaceId(InterfaceId id) { + return id == kMasterInterfaceId; +} + +inline bool IsValidInterfaceId(InterfaceId id) { + return id != kInvalidInterfaceId; +} + +} // namespace mojo + +#endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ID_H_ |