blob: 4403ef8181badf1be572511c222a4ebb3ad09b4d [file] [log] [blame]
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -08001/*
2 *
3 * Copyright (c) 2021 Project CHIP Authors
4 * All rights reserved.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19#pragma once
20
Boris Zbarsky1afe0062022-02-09 02:12:13 -050021#include <app/ConcreteClusterPath.h>
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080022#include <app/util/basic-types.h>
23
24namespace chip {
25namespace app {
26
27/**
28 * A representation of a concrete event path.
29 */
Boris Zbarsky1afe0062022-02-09 02:12:13 -050030struct ConcreteEventPath : public ConcreteClusterPath
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080031{
32 ConcreteEventPath(EndpointId aEndpointId, ClusterId aClusterId, EventId aEventId) :
Boris Zbarsky1afe0062022-02-09 02:12:13 -050033 ConcreteClusterPath(aEndpointId, aClusterId), mEventId(aEventId)
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080034 {}
35
36 ConcreteEventPath() {}
37
Karsten Sperling38d6a482023-09-29 15:50:08 +130038 ConcreteEventPath(const ConcreteEventPath & aOther) = default;
Boris Zbarsky1afe0062022-02-09 02:12:13 -050039 ConcreteEventPath & operator=(const ConcreteEventPath & aOther) = default;
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080040
Boris Zbarsky1afe0062022-02-09 02:12:13 -050041 bool operator==(const ConcreteEventPath & aOther) const
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080042 {
Boris Zbarsky1afe0062022-02-09 02:12:13 -050043 return ConcreteClusterPath::operator==(aOther) && (mEventId == aOther.mEventId);
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080044 }
45
Boris Zbarsky1afe0062022-02-09 02:12:13 -050046 bool operator!=(const ConcreteEventPath & aOther) const { return !(*this == aOther); }
47
Jerry Johns964adbc2022-04-14 16:42:04 -070048 bool operator<(const ConcreteEventPath & path) const
49 {
50 return (mEndpointId < path.mEndpointId) || ((mEndpointId == path.mEndpointId) && (mClusterId < path.mClusterId)) ||
51 ((mEndpointId == path.mEndpointId) && (mClusterId == path.mClusterId) && (mEventId < path.mEventId));
52 }
53
Boris Zbarsky1afe0062022-02-09 02:12:13 -050054 EventId mEventId = 0;
yunhanw-googlef3d6b7c2021-11-17 13:42:38 -080055};
56} // namespace app
57} // namespace chip