You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
// 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;
|
|
}
|
|
|
|
inline bool HasInterfaceIdNamespaceBitSet(InterfaceId id) {
|
|
return (id & kInterfaceIdNamespaceMask) != 0;
|
|
}
|
|
|
|
} // namespace mojo
|
|
|
|
#endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_ID_H_
|