Coverage Report

Created: 2026-11-12 07:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/connectedhomeip/src/app/icd/client/CheckInHandler.h
Line
Count
Source
1
/*
2
 *
3
 *    Copyright (c) 2023 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
/**
20
 *    @file
21
 *      This file defines objects for a CHIP check-in message unsolicited
22
 *      handler
23
 *
24
 */
25
26
#pragma once
27
28
#include <app-common/zap-generated/cluster-objects.h>
29
#include <app/CommandSender.h>
30
#include <app/OperationalSessionSetup.h>
31
#include <app/icd/client/CheckInDelegate.h>
32
#include <app/icd/client/DefaultICDClientStorage.h>
33
#include <lib/support/logging/CHIPLogging.h>
34
#include <messaging/ExchangeContext.h>
35
#include <messaging/ExchangeMgr.h>
36
37
namespace chip {
38
namespace app {
39
class InteractionModelEngine;
40
class CheckInHandler : public Messaging::ExchangeDelegate, public Messaging::UnsolicitedMessageHandler
41
{
42
43
public:
44
    CHIP_ERROR Init(Messaging::ExchangeManager * exchangeManager, ICDClientStorage * clientStorage, CheckInDelegate * delegate,
45
                    InteractionModelEngine * engine);
46
    void Shutdown();
47
48
    CheckInHandler();
49
50
1
    virtual ~CheckInHandler() = default;
51
52
protected:
53
    // ExchangeDelegate
54
    CHIP_ERROR
55
    OnMessageReceived(Messaging::ExchangeContext * ec, const PayloadHeader & payloadHeader,
56
                      System::PacketBufferHandle && payload) override;
57
58
    // UnsolicitedMessageHandler
59
    CHIP_ERROR OnUnsolicitedMessageReceived(const PayloadHeader & payloadHeader, ExchangeDelegate *& newDelegate) override;
60
61
    // TODO : Follow up to check if this really needs to be a pure virtual function in Exchange delegate
62
    // https://github.com/project-chip/connectedhomeip/issues/31322
63
    void OnResponseTimeout(Messaging::ExchangeContext * ec) override;
64
65
0
    Messaging::ExchangeMessageDispatch & GetMessageDispatch() override { return CheckInExchangeDispatch::Instance(); }
66
67
private:
68
    class CheckInExchangeDispatch : public Messaging::ExchangeMessageDispatch
69
    {
70
    public:
71
        static ExchangeMessageDispatch & Instance()
72
0
        {
73
0
            static CheckInExchangeDispatch instance;
74
0
            return instance;
75
0
        }
76
77
0
        CheckInExchangeDispatch() {}
78
0
        ~CheckInExchangeDispatch() override {}
79
80
    protected:
81
        bool MessagePermitted(Protocols::Id, uint8_t type) override
82
0
        {
83
0
            return type == to_underlying(Protocols::SecureChannel::MsgType::ICD_CheckIn);
84
0
        }
85
0
        bool IsEncryptionRequired() const override { return false; }
86
    };
87
88
    Messaging::ExchangeManager * mpExchangeManager = nullptr;
89
    CheckInDelegate * mpCheckInDelegate            = nullptr;
90
    ICDClientStorage * mpICDClientStorage          = nullptr;
91
    InteractionModelEngine * mpImEngine            = nullptr;
92
};
93
94
} // namespace app
95
} // namespace chip