Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
ffa98fd
initial setup of header filers
MaximilianToe Apr 29, 2025
d720f57
Align wildcard handling with up-spec and up-rust (#317)
lukas-he Apr 29, 2025
a980b37
Update RpcClientUSubscription to protobuf singature. Add subscription…
lennartbecker-d Apr 29, 2025
24a0ce4
Update RpcLientUSubscription
lennartbecker-d Apr 29, 2025
d86189c
before using Consumer
lennartbecker-d Apr 30, 2025
26e7161
Building without error. Test and check if functionality is correct.
lennartbecker-d Apr 30, 2025
9eeeb02
Added comment
lennartbecker-d May 2, 2025
b09d890
Done for today. No major changes. Waiting for Pete´s answer.
lennartbecker-d May 2, 2025
994924b
Added missing methods for RpcClientUSubscription
lennartbecker-d May 5, 2025
bf20377
Readded create-Method in RpcClientUSubscription. Created first MockTest
lennartbecker-d May 5, 2025
638aa0b
Readded create-Method in RpcClientUSubscription. Created first MockTest
lennartbecker-d May 5, 2025
ad4c9c3
Updated minor things in RpcClientUSubscription.
lennartbecker-d May 5, 2025
6d693da
building first try of sending method
lennartbecker-d May 8, 2025
9bd68b3
initial setup of header filers
MaximilianToe Apr 29, 2025
9ee1b4d
Update RpcClientUSubscription to protobuf singature. Add subscription…
lennartbecker-d Apr 29, 2025
a25c42f
Update RpcLientUSubscription
lennartbecker-d Apr 29, 2025
278f77a
before using Consumer
lennartbecker-d Apr 30, 2025
5ff8a54
Building without error. Test and check if functionality is correct.
lennartbecker-d Apr 30, 2025
fc89075
Added comment
lennartbecker-d May 2, 2025
7ac2441
Done for today. No major changes. Waiting for Pete´s answer.
lennartbecker-d May 2, 2025
9329928
Added missing methods for RpcClientUSubscription
lennartbecker-d May 5, 2025
80a2c59
Readded create-Method in RpcClientUSubscription. Created first MockTest
lennartbecker-d May 5, 2025
7e97be2
Readded create-Method in RpcClientUSubscription. Created first MockTest
lennartbecker-d May 5, 2025
cb5d227
Updated minor things in RpcClientUSubscription.
lennartbecker-d May 5, 2025
5fec55b
building first try of sending method
lennartbecker-d May 8, 2025
cf23e83
fixed UTransport.h
MaximilianToe May 10, 2025
bf8758b
changed access modifier for builder to public
MaximilianToe May 10, 2025
de11f6e
test name for service
MaximilianToe May 10, 2025
0e5b7a8
changed name to usubscription.local
MaximilianToe May 10, 2025
2c60ae9
changed uauth back
MaximilianToe May 10, 2025
922ddb4
some refactoring
MaximilianToe May 10, 2025
e5979fe
set method public for test
MaximilianToe May 10, 2025
dbfa4ba
added RequestBuilder
MaximilianToe May 11, 2025
554cfc9
added default options to RequestBuilder
MaximilianToe May 11, 2025
52dcb91
did some cleanup
MaximilianToe May 11, 2025
026b100
moved constructor
MaximilianToe May 11, 2025
77fca38
fixed RpcClientUSubscription constructor in header
MaximilianToe May 12, 2025
8d26515
set ue major version to 3
MaximilianToe May 13, 2025
83e886d
Revert "fixed RpcClientUSubscription constructor in header"
MaximilianToe May 13, 2025
49f61fd
fixed mistake in constructure signature
MaximilianToe May 17, 2025
67d94c8
fix
MaximilianToe May 17, 2025
0849974
tmp disabled test for rpcclientusubscription
MaximilianToe May 17, 2025
f8fb57d
fixed error handling
MaximilianToe May 17, 2025
5bcf05b
added logging to debug
MaximilianToe May 17, 2025
90ab2bb
better logging
MaximilianToe May 17, 2025
942e8ac
test
MaximilianToe May 17, 2025
6a96c34
test
MaximilianToe May 18, 2025
5a6ac08
changed serialization
MaximilianToe May 18, 2025
2b1f904
using any type for serialization
MaximilianToe May 18, 2025
5068026
Merged
lennartbecker-d May 19, 2025
68d8f92
Added method unsubscribe. Not implemented yet
lennartbecker-d May 19, 2025
2b7eb13
Added template to fill with live for unsubscribe method
lennartbecker-d May 19, 2025
6f6f7ae
Remove one line in subscribe method
lennartbecker-d May 19, 2025
450a28f
Uncommented RpcClientUSubscription Test. Clean up subscribe method by…
lennartbecker-d May 19, 2025
d9d1297
fixed linker error
MaximilianToe May 19, 2025
78bb609
Merge pull request #4 from MaximilianToe/RpcClientUSubscription_fix
lennartbecker-d May 20, 2025
4a0e4fc
Include protoToPayload Method in code
lennartbecker-d May 20, 2025
1bb9d45
Added comments in ProtoConverter
lennartbecker-d May 20, 2025
18d473b
Move ConsumerOptions to USubscriptionOptions in RequestBuilder.h
lennartbecker-d May 20, 2025
f9fa701
Added comments in RequestBuilder.h
lennartbecker-d May 20, 2025
167da8c
Small fix to get compiled again. Removed const
lennartbecker-d May 20, 2025
61d9ec4
Remove USubscriptionUUriBuilder from Consumer.h
lennartbecker-d May 20, 2025
275049a
Remove sink_resource_id_ for test in zenoh example as it failed
lennartbecker-d May 20, 2025
3d065f9
Readd sink_resource_id_
lennartbecker-d May 20, 2025
3b1dbbb
Make USubscriptionOptions const with reference for options again.
lennartbecker-d May 20, 2025
c9fa2c6
Remove comments in ProtoConverter.h
lennartbecker-d May 20, 2025
67d6fac
Remove notification_topic again. Still searching the error
lennartbecker-d May 20, 2025
5dd5f76
Readd notification topic
lennartbecker-d May 20, 2025
aac9765
Readd comments in ProtoConverter.h
lennartbecker-d May 20, 2025
1b0d0cd
Remove protoToPayload in RpcClientUSubscription to test problem
lennartbecker-d May 20, 2025
3643b20
Readd protoToPayload in RpcClientUSubscription. Negation was missing
lennartbecker-d May 20, 2025
84268eb
clang-format
lennartbecker-d May 21, 2025
244fca7
Added license. Fixed linter warnings in src
lennartbecker-d May 21, 2025
9a03dc4
Changed variable name in unsubscribe method signature. Create unsubsc…
lennartbecker-d May 21, 2025
a1ec439
Removed debugging in RpcClientUSubscription
lennartbecker-d May 21, 2025
7863143
Try to build Payload without any
lennartbecker-d May 21, 2025
3d0fefc
handle differnt types of UPayloadFormat in extractFromProtobuf
lennartbecker-d May 21, 2025
4355a10
Move handling to invokeProtoMethod ind RpcClient
lennartbecker-d May 21, 2025
de6870f
Add Debug string
lennartbecker-d May 21, 2025
63ed549
Removed debugging of response in up-cpp
lennartbecker-d May 21, 2025
677a9bd
Added fetch_subscriptions to USubscription
lennartbecker-d May 22, 2025
07c678e
Added buildFetchSubscriptionsRequest
lennartbecker-d May 22, 2025
32039ba
Added missing methods for RpcClientUSubscription and RequestBuilder t…
lennartbecker-d May 22, 2025
98516fa
Added comment to clarify topic for notification manager
lennartbecker-d May 23, 2025
9aeab6b
Some cleanup. No change in functionality
lennartbecker-d May 23, 2025
da3b5dc
Added RequestBuilderTest
lennartbecker-d May 23, 2025
df7ce2b
added first test for subscribe method
MaximilianToe May 25, 2025
2916c0d
small refactor and format
MaximilianToe May 25, 2025
7ccc381
Some renaming in Signature and adding Test in RpcClientUSubscription
lennartbecker-d May 26, 2025
f1d2a88
Added missing RequestBuilder in ProtoConverter first to have it analo…
lennartbecker-d May 26, 2025
05df8de
Add Tests
lennartbecker-d May 27, 2025
76a84b7
Added USubscriptionUUriBuilderTests
lennartbecker-d May 27, 2025
1cf8f74
Removed debeugging. Removed Payload Test. Added unimplemented in Prot…
lennartbecker-d May 28, 2025
fa399e9
Merge pull request #12 from lennartbecker-d/RpcClientUSubscription_ad…
MaximilianToe May 28, 2025
fc2b245
merge with add tests and changed description style
MaximilianToe May 28, 2025
d521cf3
added documentation to USubscription.h
MaximilianToe May 28, 2025
9891c93
changed comment style in RequestBuilder.h
MaximilianToe May 28, 2025
d137c78
more documentation
MaximilianToe May 28, 2025
b2441d0
some test refactoring
MaximilianToe May 28, 2025
584fac6
added more tests
MaximilianToe May 29, 2025
0c60d3f
added more tests
MaximilianToe May 29, 2025
11b3f27
small cleanup
MaximilianToe May 29, 2025
846fa2f
Merge pull request #5 from MaximilianToe/RpcClientUSubscription
lennartbecker-d May 30, 2025
814eb88
Moved options_ in RequestBuilderTest to be private
lennartbecker-d May 30, 2025
ec4b7e7
Remove options_ field in RequestBuilder. Make Methods static
lennartbecker-d May 30, 2025
4215a39
Formatted code. Resolved missing clang-tidy warnings, that by main pa…
lennartbecker-d May 30, 2025
e281151
Formatted code again.
lennartbecker-d May 30, 2025
5cefcb6
Formatted code again
lennartbecker-d May 30, 2025
7ce19a4
Resolved todo(lennart). Formatted code again
lennartbecker-d May 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ endif()

file(GLOB_RECURSE SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")

add_library(${PROJECT_NAME} ${SRC_FILES})
add_library(${PROJECT_NAME} ${SRC_FILES}
src/client/usubscription/v3/RpcClientUSubscription.cpp
include/up-cpp/client/usubscription/v3/RpcClientUSubscription.h
include/up-cpp/client/usubscription/v3/USubscription.h
)
add_library(up-cpp::${PROJECT_NAME} ALIAS ${PROJECT_NAME})

target_include_directories(${PROJECT_NAME}
Expand Down
101 changes: 11 additions & 90 deletions include/up-cpp/client/usubscription/v3/Consumer.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,93 +20,13 @@
#include <uprotocol/core/usubscription/v3/usubscription.pb.h>
#include <uprotocol/v1/umessage.pb.h>

#include <utility>
#include "RequestBuilder.h"
#include "USubscriptionUUriBuilder.h"

namespace uprotocol::client::usubscription::v3 {
using uprotocol::core::usubscription::v3::SubscriptionRequest;
using uprotocol::core::usubscription::v3::UnsubscribeRequest;
using uprotocol::core::usubscription::v3::Update;
using uprotocol::core::usubscription::v3::uSubscription;

/**
* @struct ConsumerOptions
* @brief Additional details for uSubscription service.
*
* Each member represents an optional parameter for the uSubscription service.
*/
struct ConsumerOptions {
/// Permission level of the subscription request
std::optional<uint32_t> permission_level;
/// TAP token for access.
std::optional<std::string> token;
/// Expiration time of the subscription.
std::optional<std::chrono::system_clock::time_point> when_expire;
/// Sample period for the subscription messages in milliseconds.
std::optional<std::chrono::milliseconds> sample_period_ms;
/// Details of the subscriber.
std::optional<google::protobuf::Any> subscriber_details;
/// Details of the subscription.
std::optional<google::protobuf::Any> subscription_details;
};

/// @struct uSubscriptionUUriBuilder
/// @brief Structure to build uSubscription request URIs.
///
/// This structure is used to build URIs for uSubscription service. It uses the
/// service options from uSubscription proto to set the authority name, ue_id,
/// ue_version_major, and the notification topic resource ID in the URI.
struct USubscriptionUUriBuilder {
private:
/// URI for the uSubscription service
v1::UUri uri_;
/// Resource ID of the notification topic
uint32_t sink_resource_id_;

public:
/// @brief Constructor for uSubscriptionUUriBuilder.
USubscriptionUUriBuilder() {
// Get the service descriptor
const google::protobuf::ServiceDescriptor* service =
uSubscription::descriptor();
const auto& service_options = service->options();

// Get the service options
const auto& service_name =
service_options.GetExtension(uprotocol::service_name);
const auto& service_version_major =
service_options.GetExtension(uprotocol::service_version_major);
const auto& service_id =
service_options.GetExtension(uprotocol::service_id);
const auto& notification_topic =
service_options.GetExtension(uprotocol::notification_topic, 0);

// Set the values in the URI
uri_.set_authority_name(service_name);
uri_.set_ue_id(service_id);
uri_.set_ue_version_major(service_version_major);
sink_resource_id_ = notification_topic.id();
}

/// @brief Get the URI with a specific resource ID.
///
/// @param resource_id The resource ID to set in the URI.
///
/// @return The URI with the specified resource ID.
v1::UUri getServiceUriWithResourceId(uint32_t resource_id) const {
v1::UUri uri = uri_; // Copy the base URI
uri.set_resource_id(resource_id);
return uri;
}

/// @brief Get the notification URI.
///
/// @return The notification URI.
v1::UUri getNotificationUri() const {
v1::UUri uri = uri_; // Copy the base URI
uri.set_resource_id(sink_resource_id_);
return uri;
}
};

/// @brief Interface for uEntities to create subscriptions.
///
Expand All @@ -133,7 +53,7 @@ struct Consumer {
const v1::UUri& subscription_topic, ListenCallback&& callback,
v1::UPriority priority,
std::chrono::milliseconds subscription_request_ttl,
ConsumerOptions consumer_options);
core::usubscription::v3::USubscriptionOptions consumer_options);

/// @brief Unsubscribe from the topic and call uSubscription service to
/// close the subscription.
Expand All @@ -158,9 +78,10 @@ struct Consumer {
///
/// @param transport Transport to register with.
/// @param subscriber_details Additional details about the subscriber.
Consumer(std::shared_ptr<transport::UTransport> transport,
v1::UUri subscription_topic,
ConsumerOptions consumer_options = {});
Consumer(
std::shared_ptr<transport::UTransport> transport,
v1::UUri subscription_topic,
core::usubscription::v3::USubscriptionOptions consumer_options = {});

private:
// Transport
Expand All @@ -169,10 +90,10 @@ struct Consumer {
// Topic to subscribe to
const v1::UUri subscription_topic_;
// Additional details about uSubscription service
ConsumerOptions consumer_options_;
core::usubscription::v3::USubscriptionOptions consumer_options_;

// URI info about the uSubscription service
USubscriptionUUriBuilder uSubscriptionUUriBuilder_;
core::usubscription::v3::USubscriptionUUriBuilder uSubscriptionUUriBuilder_;

// Subscription updates
std::unique_ptr<communication::NotificationSink> noficationSinkHandle_;
Expand All @@ -191,10 +112,10 @@ struct Consumer {
friend std::unique_ptr<Consumer>
std::make_unique<Consumer, std::shared_ptr<transport::UTransport>,
const uprotocol::v1::UUri,
uprotocol::client::usubscription::v3::ConsumerOptions>(
uprotocol::core::usubscription::v3::USubscriptionOptions>(
std::shared_ptr<uprotocol::transport::UTransport>&&,
const uprotocol::v1::UUri&&,
uprotocol::client::usubscription::v3::ConsumerOptions&&);
uprotocol::core::usubscription::v3::USubscriptionOptions&&);

/// @brief Build SubscriptionRequest for subscription request
SubscriptionRequest buildSubscriptionRequest();
Expand Down
101 changes: 101 additions & 0 deletions include/up-cpp/client/usubscription/v3/RequestBuilder.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
// SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
//
// See the NOTICE file(s) distributed with this work for additional
// information regarding copyright ownership.
//
// This program and the accompanying materials are made available under the
// terms of the Apache License Version 2.0 which is available at
// https://www.apache.org/licenses/LICENSE-2.0
//
// SPDX-License-Identifier: Apache-2.0

#ifndef UP_CPP_CLIENT_USUBSCRIPTION_V3_REQUESTBUILDER_H
#define UP_CPP_CLIENT_USUBSCRIPTION_V3_REQUESTBUILDER_H
#include <up-cpp/utils/ProtoConverter.h>
#include <uprotocol/core/usubscription/v3/usubscription.pb.h>

#include <utility>

namespace uprotocol::core::usubscription::v3 {

/// @struct USubscriptionOptions
/// @brief Additional details for uSubscription service.
///
/// Each member represents an optional parameter for the uSubscription service.
struct USubscriptionOptions {
/// Permission level of the subscription request
std::optional<uint32_t> permission_level;
/// TAP token for access.
std::optional<std::string> token;
/// Expiration time of the subscription.
std::optional<std::chrono::system_clock::time_point> when_expire;
/// Sample period for the subscription messages in milliseconds.
std::optional<std::chrono::milliseconds> sample_period_ms;
/// Details of the subscriber.
std::optional<google::protobuf::Any> subscriber_details;
/// Details of the subscription.
std::optional<google::protobuf::Any> subscription_details;
};

/// @brief Builds different requests using specified options.
///
/// This struct facilitates the construction of requests based on
/// `USubscriptionOptions`, providing methods to build different requests.
struct RequestBuilder {
/// @brief Builds a subscription request for a given topic.
///
/// @param topic The `v1::UUri` representing the topic for the subscription.
///
/// @return A `SubscriptionRequest` configured for the specified topic.
static SubscriptionRequest buildSubscriptionRequest(
const v1::UUri& topic, const USubscriptionOptions& options = {});

/// @brief Builds an unsubscription request for a given topic.
///
/// @param topic The `v1::UUri` representing the topic to unsubscribe from.
///
/// @return An `UnsubscribeRequest` configured for the specified topic.
static UnsubscribeRequest buildUnsubscribeRequest(const v1::UUri& topic);

/// @brief Build fetch subscritions request for a given topic.
///
/// @param topic The `v1::UUri` representing the topic to fetch.
///
/// @return An `FetchSubscriptionsRequest` configured for the specified
/// topic.
static FetchSubscriptionsRequest buildFetchSubscriptionsRequest(
const v1::UUri& topic);

/// @brief Build fetch subscritions request for a given subscriber.
///
/// @param subscriber The `SubscriberInfo` representing the subscriber to
/// fetch.
///
/// @return An `FetchSubscriptionsRequest` configured for the specified
/// subscriber.
static FetchSubscriptionsRequest buildFetchSubscriptionsRequest(
const SubscriberInfo& subscriber);

/// @brief Build fetch subscribers request for a given topic.
///
/// @param topic The `v1::UUri` representing the topic to fetch.
///
/// @return An `FetchSubscribersRequest` configured for the specified topic.
static FetchSubscribersRequest buildFetchSubscribersRequest(
const v1::UUri& topic);

/// @brief Build notifications request for a given topic. Subscription
/// change
/// notifications MUST use topic SubscriptionsChange with resource id
/// 0x8000, as per the protobuf definition.
///
/// @param topic The `v1::UUri` representing the topic to (un)register
/// for/from.
///
/// @return An `NotificationsRequest` configured for the specified topic.
static NotificationsRequest buildNotificationsRequest(
const v1::UUri& topic);
};

} // namespace uprotocol::core::usubscription::v3
#endif // UP_CPP_CLIENT_USUBSCRIPTION_V3_REQUESTBUILDER_H
126 changes: 126 additions & 0 deletions include/up-cpp/client/usubscription/v3/RpcClientUSubscription.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
// SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
//
// See the NOTICE file(s) distributed with this work for additional
// information regarding copyright ownership.
//
// This program and the accompanying materials are made available under the
// terms of the Apache License Version 2.0 which is available at
// https://www.apache.org/licenses/LICENSE-2.0
//
// SPDX-License-Identifier: Apache-2.0

#ifndef UP_CPP_CLIENT_USUBSCRIPTION_V3_RPCCLIENTUSUBSCRIPTION_H
#define UP_CPP_CLIENT_USUBSCRIPTION_V3_RPCCLIENTUSUBSCRIPTION_H

#include <up-cpp/communication/NotificationSink.h>
#include <up-cpp/communication/RpcClient.h>
#include <up-cpp/transport/UTransport.h>
#include <uprotocol/core/usubscription/v3/usubscription.pb.h>

#include "up-cpp/client/usubscription/v3/USubscription.h"
#include "up-cpp/client/usubscription/v3/USubscriptionUUriBuilder.h"

/// The uEntity (type) identifier of the uSubscription service.
constexpr uint32_t USUBSCRIPTION_TYPE_ID = 0x00000000;
/// The (latest) major version of the uSubscription service.
constexpr uint8_t UE_VERSION_MAJOR = 0x03;
/// The resource identifier of uSubscription's _subscribe_ operation.
constexpr uint16_t RESOURCE_ID_SUBSCRIBE = 0x0001;
/// The resource identifier of uSubscription's _unsubscribe_ operation.
constexpr uint16_t RESOURCE_ID_UNSUBSCRIBE = 0x0002;
/// The resource identifier of uSubscription's _fetch subscriptions_ operation.
constexpr uint16_t RESOURCE_ID_FETCH_SUBSCRIPTIONS = 0x0003;
/// The resource identifier of uSubscription's _register for notifications_
/// operation.
constexpr uint16_t RESOURCE_ID_REGISTER_FOR_NOTIFICATIONS = 0x0006;
/// The resource identifier of uSubscription's _unregister for notifications_
/// operation.
constexpr uint16_t RESOURCE_ID_UNREGISTER_FOR_NOTIFICATIONS = 0x0007;
/// The resource identifier of uSubscription's _fetch subscribers_ operation.
constexpr uint16_t RESOURCE_ID_FETCH_SUBSCRIBERS = 0x0008;

constexpr auto USUBSCRIPTION_REQUEST_TTL = std::chrono::milliseconds(5000);

namespace uprotocol::core::usubscription::v3 {
using v3::SubscriptionRequest;
using v3::UnsubscribeRequest;

/// @brief Client which implements the USubscription interface
struct RpcClientUSubscription : USubscription {
using RpcClientUSubscriptionOrStatus =
utils::Expected<std::unique_ptr<RpcClientUSubscription>, v1::UStatus>;
using ListenCallback = transport::UTransport::ListenCallback;
using ListenHandle = transport::UTransport::ListenHandle;

template <typename Response>
Response invokeResponse(communication::RpcClient rpc_client);

/// @brief Subscribes from a given topic
///
/// @param subscription_request The request object containing the topic to
/// subscribe to
/// @return Returns a SubscriptionResponse on success and a UStatus else
utils::Expected<SubscriptionResponse, v1::UStatus> subscribe(
const SubscriptionRequest& subscription_request) override;

/// @brief Unsubscribes from a given topic
///
/// @param unsubscribe_request The request object containing the topic to
/// unsubscribe from
/// @return Returns an UnsubscribeResponse on success and a UStatus else
utils::Expected<UnsubscribeResponse, v1::UStatus> unsubscribe(
const UnsubscribeRequest& unsubscribe_request) override;

/// @brief Fetches the list of topics the client is subscribed to
///
/// @param fetch_subscriptions_request The request object
/// @return Returns a FetchSubscriptionsResponse on success and a UStatus
/// else
utils::Expected<FetchSubscriptionsResponse, v1::UStatus>
fetch_subscriptions(
const FetchSubscriptionsRequest& fetch_subscriptions_request) override;

/// @brief Fetches the list of subscribers for a given topic
///
/// @param fetch_subscribers_request The request object containing the topic
/// for which the subscribers are to be fetched
/// @return Returns a FetchSubscribersResponse on success and a UStatus else
utils::Expected<FetchSubscribersResponse, v1::UStatus> fetch_subscribers(
const FetchSubscribersRequest& fetch_subscribers_request) override;

/// @brief Registers to receive notifications
///
/// @param register_notifications_request The request object containing
/// the details to register for notifications
/// @return Returns a NotificationResponse on success and a UStatus else
utils::Expected<NotificationsResponse, v1::UStatus>
register_for_notifications(
const NotificationsRequest& register_notifications_request) override;

/// @brief Unregisters from receiving notifications.
///
/// @param unregister_notifications_request The request object containing
/// the details needed to stop receiving notifications.
/// @return Returns a NotificationResponse on success and a UStatus else
utils::Expected<NotificationsResponse, v1::UStatus>
unregister_for_notifications(
const NotificationsRequest& unregister_notifications_request) override;

/// @brief Constructor
///
/// @param transport Transport used to send messages
explicit RpcClientUSubscription(
std::shared_ptr<transport::UTransport> transport)
: transport_(std::move(transport)) {}

~RpcClientUSubscription() override = default;

private:
std::shared_ptr<transport::UTransport> transport_;

USubscriptionUUriBuilder uuri_builder_;
};

} // namespace uprotocol::core::usubscription::v3

#endif // UP_CPP_CLIENT_USUBSCRIPTION_V3_RPCCLIENTUSUBSCRIPTION_H
Loading