feat(Redis): Add connect/disconnect/error notifications to Client#5104
Merged
feat(Redis): Add connect/disconnect/error notifications to Client#5104
Conversation
Co-Authored-By: Alex Fabijanic <alex@pocoproject.org>
aleks-f
requested changes
Dec 17, 2025
…plify conditionals
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #5058
Summary
Adds event notification support to
Poco::Redis::Clientfor connect, disconnect, and error events. This enables Node.js-style event handling for Redis client state changes.New Components
RedisNotification- Base notification classRedisConnectNotification- Fired on successful connectionRedisDisconnectNotification- Fired on disconnectRedisErrorNotification- Fired on connection errorsUsage
Original Implementation
Based on commits from devs/macchina.io repository:
d1ea231- Initial notification support withAsyncNotificationCentermember18e06d3- Lazy notification center creation with staticstd::once_flag3f63e1a- Changed tostd::atomic<std::shared_ptr<AsyncNotificationCenter>>Differences from Original
std::once_flag<mutex>includeintstd::atomic<int>(thread-safe)C++20 Feature Detection
Added
POCO_REDIS_HAVE_ATOMIC_SHARED_PTRmacro to conditionally usestd::atomic<std::shared_ptr<T>>when available, falling back tostd::atomic<T*>otherwise. This ensures compatibility with compilers that don't yet support the C++20 atomic shared_ptr specialization.Test plan
NotificationTest::testRedisNotifications- Basic notification creationNotificationTest::testAsyncNotificationCenter- Async notification deliveryNotificationTest::testClientNotifications- Client integration