Skip to content

Commit 7b224e0

Browse files
committed
remove overdesign callback
1 parent 625293e commit 7b224e0

File tree

4 files changed

+19
-19
lines changed

4 files changed

+19
-19
lines changed

examples/chip-tool/commands/common/CHIPCommand.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -655,12 +655,12 @@ void CHIPCommand::ExecuteDeferredCleanups(intptr_t ignored)
655655
sDeferredCleanups.clear();
656656
}
657657

658-
void CHIPCommand::RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
658+
void CHIPCommand::SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
659659
{
660-
sCheckInDelegate.RegisterOnCheckInCompleteCallback(handler);
660+
sCheckInDelegate.SetOnCheckInCompleteCallback(handler);
661661
}
662662

663-
void CHIPCommand::UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
663+
void CHIPCommand::UnsetOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
664664
{
665665
sCheckInDelegate.UnregisterOnCheckInCompleteCallback(handler);
666666
}

examples/chip-tool/commands/common/CHIPCommand.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,9 @@ class CHIPCommand : public Command
180180

181181
ChipDeviceCommissioner & GetCommissioner(std::string identity);
182182

183-
static void RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
183+
static void SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
184184

185-
static void UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
185+
static void UnsetOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
186186

187187
private:
188188
CHIP_ERROR MaybeSetUpStack();

examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ void ChipToolCheckInDelegate::OnCheckInComplete(const ICDClientInfo & clientInfo
3939
ChipLogProgress(
4040
ICD, "Check In Message processing complete: start_counter=%" PRIu32 " offset=%" PRIu32 " nodeid=" ChipLogFormatScopedNodeId,
4141
clientInfo.start_icd_counter, clientInfo.offset, ChipLogValueScopedNodeId(clientInfo.peer_node));
42-
for (auto handler : mCheckInCompleteCallbacks)
42+
if (mpCheckInCompleteCallbacks != nullptr)
4343
{
44-
handler->OnCheckInComplete(clientInfo);
44+
mpCheckInCompleteCallbacks->OnCheckInComplete(clientInfo);
4545
}
4646
}
4747

@@ -83,12 +83,12 @@ void ChipToolCheckInDelegate::OnKeyRefreshDone(RefreshKeySender * refreshKeySend
8383
}
8484
}
8585

86-
void ChipToolCheckInDelegate::RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
86+
void ChipToolCheckInDelegate::SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
8787
{
88-
chip::DeviceLayer::SystemLayer().ScheduleLambda([this, handler]() { mCheckInCompleteCallbacks.insert(handler); });
88+
mpCheckInCompleteCallbacks = handler;
8989
}
9090

91-
void ChipToolCheckInDelegate::UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
91+
void ChipToolCheckInDelegate::UnsetOnCheckInCompleteCallback(CheckInCompleteCallback * handler)
9292
{
93-
chip::DeviceLayer::SystemLayer().ScheduleLambda([this, handler]() { mCheckInCompleteCallbacks.insert(handler); });
93+
mpCheckInCompleteCallbacks = nullptr;
9494
}

examples/chip-tool/commands/common/ChipToolCheckInDelegate.h

+8-8
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class CheckInCompleteCallback
3232
/**
3333
* @brief Callback used to let the application know that a check-in message was received and validated.
3434
*
35-
* The callback will be executed in CHIP main loop. Implementations avoid blocking in this callback.
35+
* The callback will be executed in CHIP main loop. Implementations should avoid blocking operations in this callback.
3636
*
3737
* @param[in] clientInfo - ICDClientInfo object representing the state associated with the
3838
* node that sent the check-in message.
@@ -51,26 +51,26 @@ class ChipToolCheckInDelegate : public chip::app::CheckInDelegate
5151
void OnKeyRefreshDone(chip::app::RefreshKeySender * refreshKeySender, CHIP_ERROR error) override;
5252

5353
/**
54-
* @brief Reigsters a callback when the check-in completes.
54+
* @brief Sets the callback when the check-in completes.
5555
*
56-
* The registeration will be processed inside CHIP main loop.
56+
* This method does not consider the race condition that the callback is changed during OnCheckInComplete.
5757
*
5858
* @param[in] handler - A pointer to CheckInCompleteCallback to register.
5959
*/
60-
void RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
60+
void SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
6161

6262
/**
63-
* @brief Unreigsters a callback when the check-in completes.
63+
* @brief Unset the callback when the check-in completes.
6464
*
65-
* The unregisteration will be processed inside CHIP main loop.
65+
* This method does not consider the race condition that the callback is changed during OnCheckInComplete.
6666
*
6767
* @param[in] handler - A pointer to CheckInCompleteCallback to unregister.
6868
*/
69-
void UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler);
69+
void UnsetOnCheckInCompleteCallback();
7070

7171
private:
7272
chip::app::ICDClientStorage * mpStorage = nullptr;
7373
chip::app::InteractionModelEngine * mpImEngine = nullptr;
7474

75-
std::set<CheckInCompleteCallback *> mCheckInCompleteCallbacks;
75+
CheckInCompleteCallback * mpCheckInCompleteCallbacks;
7676
};

0 commit comments

Comments
 (0)