From eebd7a53fddfc90656d52883bffdc13224c016a7 Mon Sep 17 00:00:00 2001
From: Carsten Patzke <carsten.patzke@desy.de>
Date: Wed, 8 Apr 2020 16:33:50 +0200
Subject: [PATCH] [RDS] Removed source_id exposure to the client

---
 .../src/receiver_data_server/rds_net_server.h     |  5 ++---
 .../receiver_data_server_request_handler.cpp      |  4 ++--
 receiver/src/receiver_data_server/tcp_server.cpp  | 11 +++++------
 receiver/src/receiver_data_server/tcp_server.h    |  5 ++---
 .../receiver_dataserver_mocking.h                 | 15 +++++++--------
 .../receiver_data_server/test_request_handler.cpp |  2 --
 .../receiver_data_server/test_tcp_server.cpp      |  8 ++++----
 7 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/receiver/src/receiver_data_server/rds_net_server.h b/receiver/src/receiver_data_server/rds_net_server.h
index 7465a5838..57dd22a14 100644
--- a/receiver/src/receiver_data_server/rds_net_server.h
+++ b/receiver/src/receiver_data_server/rds_net_server.h
@@ -10,11 +10,10 @@ namespace asapo {
 class RdsNetServer {
   public:
     virtual GenericRequests GetNewRequests(Error* err) const noexcept = 0;
-    virtual Error SendResponse(const ReceiverDataServerRequest* request, uint64_t source_id,
+    virtual Error SendResponse(const ReceiverDataServerRequest* request,
                                const GenericNetworkResponse* response) const noexcept = 0;
     virtual Error
-    SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id,
-                            const GenericNetworkResponse* response,
+    SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response,
                             const CacheMeta* cache_slot) const noexcept = 0;
     virtual void HandleAfterError(uint64_t source_id) const noexcept = 0;
     virtual ~RdsNetServer() = default;
diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp b/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
index c064a9772..af648156d 100644
--- a/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
+++ b/receiver/src/receiver_data_server/receiver_data_server_request_handler.cpp
@@ -19,7 +19,7 @@ Error ReceiverDataServerRequestHandler::SendResponse(const ReceiverDataServerReq
     GenericNetworkResponse response{};
     response.op_code = kOpcodeGetBufferData;
     response.error_code = code;
-    return server_->SendResponse(request, request->source_id, &response);
+    return server_->SendResponse(request, &response);
 }
 
 Error ReceiverDataServerRequestHandler::SendResponseAndSlotData(const ReceiverDataServerRequest* request,
@@ -27,7 +27,7 @@ Error ReceiverDataServerRequestHandler::SendResponseAndSlotData(const ReceiverDa
     GenericNetworkResponse response{};
     response.op_code = kOpcodeGetBufferData;
     response.error_code = kNetErrorNoError;
-    return server_->SendResponseAndSlotData(request, request->source_id, &response,
+    return server_->SendResponseAndSlotData(request, &response,
                                             meta);
 }
 
diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/tcp_server.cpp
index 6dd04c636..02c4c67a4 100644
--- a/receiver/src/receiver_data_server/tcp_server.cpp
+++ b/receiver/src/receiver_data_server/tcp_server.cpp
@@ -94,10 +94,10 @@ void TcpServer::HandleAfterError(uint64_t source_id) const noexcept {
     CloseSocket(source_id);
 }
 
-Error TcpServer::SendResponse(const ReceiverDataServerRequest* request, uint64_t source_id,
+Error TcpServer::SendResponse(const ReceiverDataServerRequest* request,
                               const GenericNetworkResponse* response) const noexcept {
     Error err;
-    io__->Send(source_id, response, sizeof(*response), &err);
+    io__->Send(request->source_id, response, sizeof(*response), &err);
     if (err) {
         log__->Error("cannot send to consumer" + err->Explain());
     }
@@ -105,17 +105,16 @@ Error TcpServer::SendResponse(const ReceiverDataServerRequest* request, uint64_t
 }
 
 Error
-TcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id,
-                                   const GenericNetworkResponse* response,
+TcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response,
                                    const CacheMeta* cache_slot) const noexcept {
     Error err;
 
-    err = SendResponse(nullptr, source_id, response);
+    err = SendResponse(request, response);
     if (err) {
         return err;
     }
 
-    io__->Send(source_id, cache_slot->addr, cache_slot->size, &err);
+    io__->Send(request->source_id, cache_slot->addr, cache_slot->size, &err);
     if (err) {
         log__->Error("cannot send slot to worker" + err->Explain());
     }
diff --git a/receiver/src/receiver_data_server/tcp_server.h b/receiver/src/receiver_data_server/tcp_server.h
index c7caf5ecc..9f0f4fe34 100644
--- a/receiver/src/receiver_data_server/tcp_server.h
+++ b/receiver/src/receiver_data_server/tcp_server.h
@@ -14,10 +14,9 @@ class TcpServer : public RdsNetServer {
     explicit TcpServer(std::string address);
     ~TcpServer() override;
     GenericRequests GetNewRequests(Error* err) const noexcept override ;
-    Error SendResponse(const ReceiverDataServerRequest* request, uint64_t source_id,
+    Error SendResponse(const ReceiverDataServerRequest* request,
                        const GenericNetworkResponse* response) const noexcept override;
-    Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id,
-                                  const GenericNetworkResponse* response,
+    Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response,
                                   const CacheMeta* cache_slot) const noexcept override;
     void HandleAfterError(uint64_t source_id) const noexcept override;
     std::unique_ptr<IO> io__;
diff --git a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
index dc8c1ef9e..33df3e793 100644
--- a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
+++ b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h
@@ -27,20 +27,19 @@ class MockNetServer : public RdsNetServer {
     MOCK_CONST_METHOD1(GetNewRequests_t, std::vector<ReceiverDataServerRequest> (ErrorInterface**
                        error));
 
-    Error SendResponse(const ReceiverDataServerRequest* request, uint64_t source_id,
+    Error SendResponse(const ReceiverDataServerRequest* request,
                        const GenericNetworkResponse* response) const noexcept override  {
-        return  Error{SendResponse_t(request, source_id, response)};
+        return  Error{SendResponse_t(request, response)};
     };
-    MOCK_CONST_METHOD3(SendResponse_t, ErrorInterface * (const ReceiverDataServerRequest* request, uint64_t source_id,
+    MOCK_CONST_METHOD2(SendResponse_t, ErrorInterface * (const ReceiverDataServerRequest* request,
                        const GenericNetworkResponse* response));
 
-    Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id,
-                                  const GenericNetworkResponse* response,
+    Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, const GenericNetworkResponse* response,
                                   const CacheMeta* cache_slot) const noexcept override {
-        return  Error{SendResponseAndSlotData_t(request, source_id, response, cache_slot)};
+        return  Error{SendResponseAndSlotData_t(request, response, cache_slot)};
     };
-    MOCK_CONST_METHOD4(SendResponseAndSlotData_t, ErrorInterface * (const ReceiverDataServerRequest* request,
-                       uint64_t source_id, const GenericNetworkResponse* response,
+    MOCK_CONST_METHOD3(SendResponseAndSlotData_t, ErrorInterface * (const ReceiverDataServerRequest* request,
+                       const GenericNetworkResponse* response,
                        const CacheMeta* cache_slot));
 
     void  HandleAfterError(uint64_t source_id) const noexcept override {
diff --git a/receiver/unittests/receiver_data_server/test_request_handler.cpp b/receiver/unittests/receiver_data_server/test_request_handler.cpp
index 613aaf477..95bf5fdf0 100644
--- a/receiver/unittests/receiver_data_server/test_request_handler.cpp
+++ b/receiver/unittests/receiver_data_server/test_request_handler.cpp
@@ -88,7 +88,6 @@ void RequestHandlerTests::MockGetSlotAndUnlockIt(bool return_without_error) {
 void RequestHandlerTests::MockSendResponse(asapo::NetworkErrorCode expected_response_code, bool return_without_error) {
     EXPECT_CALL(mock_net, SendResponse_t(
                     &request,
-                    expected_source_id,
                     M_CheckResponse(asapo::kOpcodeGetBufferData, expected_response_code, "")
                 )).WillOnce(
                     Return(return_without_error ? nullptr : asapo::IOErrorTemplates::kUnknownIOError.Generate().release())
@@ -99,7 +98,6 @@ void RequestHandlerTests::MockSendResponseAndSlotData(asapo::NetworkErrorCode ex
         bool return_without_error) {
     EXPECT_CALL(mock_net, SendResponseAndSlotData_t(
                     &request,
-                    expected_source_id,
                     M_CheckResponse(asapo::kOpcodeGetBufferData, expected_response_code, ""),
                     &expected_meta
                 )).WillOnce(
diff --git a/receiver/unittests/receiver_data_server/test_tcp_server.cpp b/receiver/unittests/receiver_data_server/test_tcp_server.cpp
index 40b1a4a82..3ae9dbe73 100644
--- a/receiver/unittests/receiver_data_server/test_tcp_server.cpp
+++ b/receiver/unittests/receiver_data_server/test_tcp_server.cpp
@@ -247,7 +247,7 @@ TEST_F(TCPServerTests, SendResponse) {
 
     EXPECT_CALL(mock_logger, Error(HasSubstr("cannot send")));
 
-    auto err = tcp_server.SendResponse(&expectedRequest, 30, &tmp);
+    auto err = tcp_server.SendResponse(&expectedRequest, &tmp);
 
     ASSERT_THAT(err, Ne(nullptr));
 }
@@ -270,7 +270,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendResponseError) {
               ));
     EXPECT_CALL(mock_logger, Error(HasSubstr("cannot send")));
 
-    auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, 30, &tmp, &expectedMeta);
+    auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, &tmp, &expectedMeta);
 
     ASSERT_THAT(err, Ne(nullptr));
 }
@@ -296,7 +296,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendDataError) {
 
     EXPECT_CALL(mock_logger, Error(HasSubstr("cannot send")));
 
-    auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, 30, &tmp, &expectedMeta);
+    auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, &tmp, &expectedMeta);
 
     ASSERT_THAT(err, Ne(nullptr));
 }
@@ -316,7 +316,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_Ok) {
     EXPECT_CALL(mock_io, Send_t(30, expectedMeta.addr, expectedMeta.size, _))
     .WillOnce(Return(expectedMeta.size));
 
-    auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, 30, &tmp, &expectedMeta);
+    auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, &tmp, &expectedMeta);
 
     ASSERT_THAT(err, Eq(nullptr));
 }
-- 
GitLab