| // 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_ |
| // 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; |
| #endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ID_H_ |