Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
46 changes: 42 additions & 4 deletions include/up-cpp/utils/ProtoConverter.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#ifndef UP_CPP_UTILS_PROTOCONVERTER_H
#define UP_CPP_UTILS_PROTOCONVERTER_H

Expand Down Expand Up @@ -56,13 +56,51 @@
/// @param subscription_topic the UUri of the topic to unsubscribe from
/// @return the built UnsubscribeRequest
static UnsubscribeRequest BuildUnSubscribeRequest(
const v1::UUri& subscription_topic);UnsubscribeRequest BuildUnSubscribeRequest(const v1::UUri& uri, const SubscribeAttributes& attributes);
const v1::UUri& subscription_topic);
static UnsubscribeRequest BuildUnSubscribeRequest(const v1::UUri& uri, const SubscribeAttributes& attributes);

template <typename T>
static utils::Expected<T, v1::UStatus> extractFromProtobuf(const v1::UMessage& message);

static utils::Expected<T, v1::UStatus> extractFromProtobuf(const v1::UMessage& message)
{
google::protobuf::Any any;

if (!any.ParseFromString(message.payload())) {
v1::UStatus status;
status.set_code(v1::UCode::INTERNAL);
status.set_message("extractFromProtobuf: Error when parsing payload.");
return utils::Expected<T, v1::UStatus>(
utils::Unexpected<v1::UStatus>(status));
}

T response;

if (!any.UnpackTo(&response)) {
v1::UStatus status;
status.set_code(v1::UCode::INTERNAL);
status.set_message("extractFromProtobuf: Error when unpacking any.");
return utils::Expected<T, v1::UStatus>(
utils::Unexpected<v1::UStatus>(status));
}

return Expected<T, v1::UStatus>(response);
}

template <typename T>
static utils::Expected<datamodel::builder::Payload, v1::UStatus> protoToPayload(const T& proto);
static utils::Expected<datamodel::builder::Payload, v1::UStatus> protoToPayload(const T& proto) {
google::protobuf::Any any;

if (!any.PackFrom(proto)) {
v1::UStatus status;
status.set_code(v1::UCode::INTERNAL);
status.set_message("protoToPayload: There was an error when serializing the subscription request.");
return utils::Expected<datamodel::builder::Payload, v1::UStatus>(
utils::Unexpected<v1::UStatus>(status));
}

const datamodel::builder::Payload payload(any);

return utils::Expected<datamodel::builder::Payload, v1::UStatus>(payload);
}

};
}; // namespace uprotocol::utils
Expand Down
39 changes: 0 additions & 39 deletions src/utils/ProtoConverter.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#include "up-cpp/utils/ProtoConverter.h"
#include <spdlog/spdlog.h>
#include <uprotocol/v1/ustatus.pb.h>
Expand Down Expand Up @@ -81,43 +81,4 @@
return unsubscribe_request;
}

template <typename T>
utils::Expected<T, v1::UStatus> ProtoConverter::extractFromProtobuf(const v1::UMessage& message) {
google::protobuf::Any any;

if (!any.ParseFromString(message.payload())) {
spdlog::error("extractFromProtobuf: Error parsing response payload.");
}

T response;

if (!any.UnpackTo(&response)) {
v1::UStatus status;
status.set_code(v1::UCode::INTERNAL);
status.set_message("extractFromProtobuf: Error when unpacking any.");
return utils::Expected<T, v1::UStatus>(
utils::Unexpected<v1::UStatus>(status));
}

return response;
}

template <typename T>
utils::Expected<datamodel::builder::Payload, v1::UStatus> protoToPayload(const T& proto){

google::protobuf::Any any;

if (!any.PackFrom(proto)) {
v1::UStatus status;
status.set_code(v1::UCode::INTERNAL);
status.set_message("protoToPayload: There was an error when serializing the subscription request.");
return utils::Expected<datamodel::builder::Payload, v1::UStatus>(
utils::Unexpected<v1::UStatus>(status));
}

datamodel::builder::Payload payload(any);

return utils::Expected<datamodel::builder::Payload, v1::UStatus>(payload);
}

} // namespace uprotocol::utils
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
// SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation
//
// See the NOTICE file(s) distributed with this work for additional
Expand Down Expand Up @@ -94,17 +94,17 @@
~RpcClientUSubscriptionTest() override = default;
};

// Negative test case with no source filter
// TEST_F(RpcClientUSubscriptionTest, ConstructorTestSuccess) { // NOLINT
//Negative test case with no source filter
TEST_F(RpcClientUSubscriptionTest, ConstructorTestSuccess) { // NOLINT

// auto rpc_client_usubscription = std::make_unique<
// uprotocol::core::usubscription::v3::RpcClientUSubscription>(
// getMockTransportClient());
auto rpc_client_usubscription = std::make_unique<
uprotocol::core::usubscription::v3::RpcClientUSubscription>(
getMockTransportClient());

// Verify that the RpcClientUSubscription pointer is not null, indicating
// successful
// ASSERT_NE(rpc_client_usubscription, nullptr);
// }
ASSERT_NE(rpc_client_usubscription, nullptr);
}

// TEST_F(RpcClientUSubscriptionTest, SubscribeTestSuccess) { // NOLINT
//
Expand Down
Loading