diff --git a/receiver/src/receiver_data_server/net_server.h b/receiver/src/receiver_data_server/net_server.h deleted file mode 100644 index 7275889211b14357da801b7eee1a7b5bcee02874..0000000000000000000000000000000000000000 --- a/receiver/src/receiver_data_server/net_server.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef ASAPO_NET_SERVER_H -#define ASAPO_NET_SERVER_H - -#include "common/error.h" - -#include "request/request.h" -#include "../data_cache.h" - -namespace asapo { - -class NetServer { - public: - virtual GenericRequests GetNewRequests(Error* err) const noexcept = 0; - virtual Error SendResponse(uint64_t source_id, GenericNetworkResponse* response) const noexcept = 0; - virtual Error SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response, - GenericRequestHeader* request, const CacheMeta* cache_slot) const noexcept = 0; - virtual void HandleAfterError(uint64_t source_id) const noexcept = 0; - virtual ~NetServer() = default; -}; - -} - -#endif //ASAPO_NET_SERVER_H diff --git a/receiver/src/receiver_data_server/rds_net_server.h b/receiver/src/receiver_data_server/rds_net_server.h new file mode 100644 index 0000000000000000000000000000000000000000..7498f77949dda50f94c8d91eaef12779523d64d7 --- /dev/null +++ b/receiver/src/receiver_data_server/rds_net_server.h @@ -0,0 +1,24 @@ +#ifndef ASAPO_RDS_NET_SERVER_H +#define ASAPO_RDS_NET_SERVER_H + +#include "../data_cache.h" +#include "common/error.h" +#include "receiver_data_server_request.h" + +namespace asapo { + +class RdsNetServer { + public: + virtual GenericRequests GetNewRequests(Error* err) const noexcept = 0; + virtual Error SendResponse(uint64_t source_id, const GenericNetworkResponse* response) const noexcept = 0; + virtual Error + SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id, + const GenericNetworkResponse* response, + const CacheMeta* cache_slot) const noexcept = 0; + virtual void HandleAfterError(uint64_t source_id) const noexcept = 0; + virtual ~RdsNetServer() = default; +}; + +} + +#endif //ASAPO_RDS_NET_SERVER_H diff --git a/receiver/src/receiver_data_server/receiver_data_server.h b/receiver/src/receiver_data_server/receiver_data_server.h index c7edda3f3ab16f1c0376f489d943bd96574ea252..889ce357c5fa43ab19a3c5874e3bc3c8a81a8eae 100644 --- a/receiver/src/receiver_data_server/receiver_data_server.h +++ b/receiver/src/receiver_data_server/receiver_data_server.h @@ -3,7 +3,7 @@ #include <memory> -#include "net_server.h" +#include "rds_net_server.h" #include "request/request_pool.h" #include "logger/logger.h" #include "../data_cache.h" @@ -21,7 +21,7 @@ class ReceiverDataServer { explicit ReceiverDataServer(std::string address, LogLevel log_level, SharedCache data_cache, const ReceiverDataCenterConfig& config); std::unique_ptr<RequestPool> request_pool__; - std::unique_ptr<NetServer> net__; + std::unique_ptr<RdsNetServer> net__; const AbstractLogger* log__; void Run(); private: diff --git a/receiver/src/receiver_data_server/receiver_data_server_request.h b/receiver/src/receiver_data_server/receiver_data_server_request.h index 0a6d24f63787594009b3b9fefa4ebdf452577780..541e08dddf45cf259861699a97e6f941bf5d9b6b 100644 --- a/receiver/src/receiver_data_server/receiver_data_server_request.h +++ b/receiver/src/receiver_data_server/receiver_data_server_request.h @@ -7,7 +7,7 @@ namespace asapo { -class NetServer; +class RdsNetServer; class ReceiverDataServerRequest : public GenericRequest { public: 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 2d911b111579bd7af6926c3fa5500d347fb58f82..c8668d763ab3b517db140dc90a398cda5b5c3b40 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 @@ -4,7 +4,7 @@ namespace asapo { -ReceiverDataServerRequestHandler::ReceiverDataServerRequestHandler(const NetServer* server, +ReceiverDataServerRequestHandler::ReceiverDataServerRequestHandler(const RdsNetServer* server, DataCache* data_cache, Statistics* statistics): log__{GetDefaultReceiverDataServerLogger()}, statistics__{statistics}, server_{server}, data_cache_{data_cache} { @@ -27,7 +27,8 @@ Error ReceiverDataServerRequestHandler::SendResponseAndSlotData(const ReceiverDa GenericNetworkResponse response{}; response.op_code = kOpcodeGetBufferData; response.error_code = kNetErrorNoError; - return server_->SendResponseAndSlotData(request->source_id, &response, (GenericRequestHeader*) &request->header, meta); + return server_->SendResponseAndSlotData(request, request->source_id, &response, + meta); } CacheMeta* ReceiverDataServerRequestHandler::GetSlotAndLock(const ReceiverDataServerRequest* request) { diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler.h b/receiver/src/receiver_data_server/receiver_data_server_request_handler.h index 7452d2e26ca2330b7a7d3eac6348fa953bf1d312..2fdc005d7ea63cd0bb412721ae5f03913f564619 100644 --- a/receiver/src/receiver_data_server/receiver_data_server_request_handler.h +++ b/receiver/src/receiver_data_server/receiver_data_server_request_handler.h @@ -2,7 +2,7 @@ #define ASAPO_RECEIVER_DATA_SERVER_REQUEST_HANDLER_H #include "request/request_handler.h" -#include "net_server.h" +#include "rds_net_server.h" #include "../data_cache.h" #include "receiver_data_server_request.h" #include "receiver_data_server_logger.h" @@ -12,7 +12,7 @@ namespace asapo { class ReceiverDataServerRequestHandler: public RequestHandler { public: - explicit ReceiverDataServerRequestHandler(const NetServer* server, DataCache* data_cache, Statistics* statistics); + explicit ReceiverDataServerRequestHandler(const RdsNetServer* server, DataCache* data_cache, Statistics* statistics); bool ProcessRequestUnlocked(GenericRequest* request, bool* retry) override; bool ReadyProcessRequest() override; void PrepareProcessingRequestLocked() override; @@ -22,7 +22,7 @@ class ReceiverDataServerRequestHandler: public RequestHandler { const AbstractLogger* log__; Statistics* statistics__; private: - const NetServer* server_; + const RdsNetServer* server_; DataCache* data_cache_; bool CheckRequest(const ReceiverDataServerRequest* request); Error SendResponse(const ReceiverDataServerRequest* request, NetworkErrorCode code); diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.cpp b/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.cpp index d3e259ff1ffa0940a3887eb6b1e2159fd69a33e2..6bb83b77cdd68ab3bef4439ca7fc74577e9343de 100644 --- a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.cpp +++ b/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.cpp @@ -8,9 +8,9 @@ std::unique_ptr<RequestHandler> ReceiverDataServerRequestHandlerFactory::NewRequ uint64_t* shared_counter) { return std::unique_ptr<RequestHandler> {new ReceiverDataServerRequestHandler(server_, data_cache_, statistics_)}; } -ReceiverDataServerRequestHandlerFactory::ReceiverDataServerRequestHandlerFactory(const NetServer* server, +ReceiverDataServerRequestHandlerFactory::ReceiverDataServerRequestHandlerFactory(const RdsNetServer* server, DataCache* data_cache, Statistics* statistics) : server_{server}, data_cache_{data_cache}, statistics_{statistics} { } -} \ No newline at end of file +} diff --git a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h b/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h index b84f80fc8b562041b78cd97f8fee5897fc8d2807..29e23e166f17a397c6af4f381535ac2d4df0f230 100644 --- a/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h +++ b/receiver/src/receiver_data_server/receiver_data_server_request_handler_factory.h @@ -5,7 +5,7 @@ #include "request/request_handler.h" #include "preprocessor/definitions.h" -#include "net_server.h" +#include "rds_net_server.h" #include "../data_cache.h" #include "../statistics.h" @@ -13,10 +13,10 @@ namespace asapo { class ReceiverDataServerRequestHandlerFactory : public RequestHandlerFactory { public: - ReceiverDataServerRequestHandlerFactory (const NetServer* server, DataCache* data_cache, Statistics* statistics); + ReceiverDataServerRequestHandlerFactory (const RdsNetServer* server, DataCache* data_cache, Statistics* statistics); VIRTUAL std::unique_ptr<RequestHandler> NewRequestHandler(uint64_t thread_id, uint64_t* shared_counter) override; private: - const NetServer* server_; + const RdsNetServer* server_; DataCache* data_cache_; Statistics* statistics_; }; diff --git a/receiver/src/receiver_data_server/tcp_server.cpp b/receiver/src/receiver_data_server/tcp_server.cpp index f8f52b507e237be2dd70213fed42715267a79d0f..36c72c4fde0306f6e825930e5ebd826cfae110f9 100644 --- a/receiver/src/receiver_data_server/tcp_server.cpp +++ b/receiver/src/receiver_data_server/tcp_server.cpp @@ -94,7 +94,7 @@ void TcpServer::HandleAfterError(uint64_t source_id) const noexcept { CloseSocket(source_id); } -Error TcpServer::SendResponse(uint64_t source_id, GenericNetworkResponse* response) const noexcept { +Error TcpServer::SendResponse(uint64_t source_id, const GenericNetworkResponse* response) const noexcept { Error err; io__->Send(source_id, response, sizeof(*response), &err); if (err) { @@ -103,8 +103,10 @@ Error TcpServer::SendResponse(uint64_t source_id, GenericNetworkResponse* respon return err; } -Error TcpServer::SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response, - GenericRequestHeader* /*request*/, const CacheMeta* cache_slot) const noexcept { +Error +TcpServer::SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id, + const GenericNetworkResponse* response, + const CacheMeta* cache_slot) const noexcept { Error err; err = SendResponse(source_id, response); diff --git a/receiver/src/receiver_data_server/tcp_server.h b/receiver/src/receiver_data_server/tcp_server.h index 337b8bdb15d3a8788bd29fa9c7b408f12e71712f..12d9aac118dba7bc7e77446d15c4c4a62eec1bf1 100644 --- a/receiver/src/receiver_data_server/tcp_server.h +++ b/receiver/src/receiver_data_server/tcp_server.h @@ -1,7 +1,7 @@ #ifndef ASAPO_RDS_TCP_SERVER_H #define ASAPO_RDS_TCP_SERVER_H -#include "net_server.h" +#include "rds_net_server.h" #include "io/io.h" #include "logger/logger.h" #include "receiver_data_server_request.h" @@ -9,14 +9,15 @@ namespace asapo { const int kMaxPendingConnections = 5; -class TcpServer : public NetServer { +class TcpServer : public RdsNetServer { public: explicit TcpServer(std::string address); ~TcpServer() override; GenericRequests GetNewRequests(Error* err) const noexcept override ; - Error SendResponse(uint64_t source_id, GenericNetworkResponse* response) const noexcept override; - Error SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response, - GenericRequestHeader* request, const CacheMeta* cache_slot) const noexcept override; + Error SendResponse(uint64_t source_id, const GenericNetworkResponse* response) const noexcept override; + Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id, + const GenericNetworkResponse* response, + const CacheMeta* cache_slot) const noexcept override; void HandleAfterError(uint64_t source_id) const noexcept override; std::unique_ptr<IO> io__; const AbstractLogger* log__; diff --git a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h index 49cb7539a3defd651c96e7bb503f1609bcfccebe..bfe19e4098a50110037bed22e1250f1320a4f362 100644 --- a/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h +++ b/receiver/unittests/receiver_data_server/receiver_dataserver_mocking.h @@ -4,13 +4,13 @@ #include <gtest/gtest.h> #include <gmock/gmock.h> -#include "../../src/receiver_data_server/net_server.h" +#include "../../src/receiver_data_server/rds_net_server.h" #include "request/request_pool.h" #include "../../src/receiver_data_server/receiver_data_server_request.h" namespace asapo { -class MockNetServer : public NetServer { +class MockNetServer : public RdsNetServer { public: GenericRequests GetNewRequests(Error* err) const noexcept override { ErrorInterface* error = nullptr; @@ -27,17 +27,19 @@ class MockNetServer : public NetServer { MOCK_CONST_METHOD1(GetNewRequests_t, std::vector<ReceiverDataServerRequest> (ErrorInterface** error)); - Error SendResponse(uint64_t source_id, GenericNetworkResponse* response) const noexcept override { + Error SendResponse(uint64_t source_id, const GenericNetworkResponse* response) const noexcept override { return Error{SendResponse_t(source_id, response)}; }; - MOCK_CONST_METHOD2(SendResponse_t, ErrorInterface * (uint64_t source_id, GenericNetworkResponse* response)); + MOCK_CONST_METHOD2(SendResponse_t, ErrorInterface * (uint64_t source_id, const GenericNetworkResponse* response)); - Error SendResponseAndSlotData(uint64_t source_id, GenericNetworkResponse* response, GenericRequestHeader* request, + Error SendResponseAndSlotData(const ReceiverDataServerRequest* request, uint64_t source_id, + const GenericNetworkResponse* response, const CacheMeta* cache_slot) const noexcept override { - return Error{SendResponseAndSlotData_t(source_id, response, request, cache_slot)}; + return Error{SendResponseAndSlotData_t(request, source_id, response, cache_slot)}; }; - MOCK_CONST_METHOD4(SendResponseAndSlotData_t, ErrorInterface * (uint64_t source_id, GenericNetworkResponse* response, - GenericRequestHeader* request, const CacheMeta* cache_slot)); + MOCK_CONST_METHOD4(SendResponseAndSlotData_t, ErrorInterface * (const ReceiverDataServerRequest* request, + uint64_t source_id, const GenericNetworkResponse* response, + const CacheMeta* cache_slot)); void HandleAfterError(uint64_t source_id) const noexcept override { HandleAfterError_t(source_id); diff --git a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp index 50017308ce4856b558270470ff3a65d9a1431a5d..17f798369b240d4bff4a2fa0c39f6b758b71eabb 100644 --- a/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp +++ b/receiver/unittests/receiver_data_server/test_receiver_data_server.cpp @@ -59,7 +59,7 @@ class ReceiverDataServerTests : public Test { NiceMock<asapo::MockLogger> mock_logger; NiceMock<asapo::MockStatistics> mock_statistics; void SetUp() override { - data_server.net__ = std::unique_ptr<asapo::NetServer> {&mock_net}; + data_server.net__ = std::unique_ptr<asapo::RdsNetServer> {&mock_net}; data_server.request_pool__ = std::unique_ptr<asapo::RequestPool> {&mock_pool}; data_server.log__ = &mock_logger; data_server.statistics__ = std::unique_ptr<asapo::Statistics> {&mock_statistics};; diff --git a/receiver/unittests/receiver_data_server/test_request_handler.cpp b/receiver/unittests/receiver_data_server/test_request_handler.cpp index 195008219d3e012fab809d20a78d0e2cba4872a2..7334eb182bba1a42667d4acc44173281d1eb5f9b 100644 --- a/receiver/unittests/receiver_data_server/test_request_handler.cpp +++ b/receiver/unittests/receiver_data_server/test_request_handler.cpp @@ -97,9 +97,9 @@ void RequestHandlerTests::MockSendResponse(asapo::NetworkErrorCode expected_resp void RequestHandlerTests::MockSendResponseAndSlotData(asapo::NetworkErrorCode expected_response_code, bool return_without_error) { EXPECT_CALL(mock_net, SendResponseAndSlotData_t( + &request, expected_source_id, M_CheckResponse(asapo::kOpcodeGetBufferData, expected_response_code, ""), - &request.header, &expected_meta )).WillOnce( Return(return_without_error ? nullptr : asapo::IOErrorTemplates::kUnknownIOError.Generate().release()) diff --git a/receiver/unittests/receiver_data_server/test_request_handler_factory.cpp b/receiver/unittests/receiver_data_server/test_request_handler_factory.cpp index 770804c8f908d0d5dfbeb9074984df07a94862bb..44ecc6462c46854fc698e0d54be6cc4f77807c79 100644 --- a/receiver/unittests/receiver_data_server/test_request_handler_factory.cpp +++ b/receiver/unittests/receiver_data_server/test_request_handler_factory.cpp @@ -35,7 +35,7 @@ TEST(ReceiverDataServerRequestHandlerFactory, Constructor) { config.nthreads = 4; ReceiverDataServer data_server{"", asapo::LogLevel::Debug, nullptr, config}; asapo::Statistics stat; - ReceiverDataServerRequestHandlerFactory factory((asapo::NetServer*)&data_server, nullptr, &stat); + ReceiverDataServerRequestHandlerFactory factory((asapo::RdsNetServer*)&data_server, nullptr, &stat); auto handler = factory.NewRequestHandler(1, nullptr); ASSERT_THAT(dynamic_cast<const asapo::ReceiverDataServerRequestHandler*>(handler.get()), Ne(nullptr)); } diff --git a/receiver/unittests/receiver_data_server/test_tcp_server.cpp b/receiver/unittests/receiver_data_server/test_tcp_server.cpp index eb5c1dd5368d07e4d095d90381c228c3ab77a78c..1d9127a5098399fb97b7a75fa7cb152748142ce0 100644 --- a/receiver/unittests/receiver_data_server/test_tcp_server.cpp +++ b/receiver/unittests/receiver_data_server/test_tcp_server.cpp @@ -255,21 +255,21 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendResponseError) { asapo::GenericNetworkResponse tmp {}; - asapo::GenericRequestHeader expectedRequest {}; + asapo::ReceiverDataServerRequest expectedRequest {{}, 30}; asapo::CacheMeta expectedMeta {}; expectedMeta.id = 20; expectedMeta.addr = (void*)0x9234; expectedMeta.size = 50; expectedMeta.lock = 123; - EXPECT_CALL(mock_io, Send_t(1, &tmp, sizeof(asapo::GenericNetworkResponse), _)) + EXPECT_CALL(mock_io, Send_t(30, &tmp, sizeof(asapo::GenericNetworkResponse), _)) .WillOnce(DoAll( testing::SetArgPointee<3>(asapo::IOErrorTemplates::kUnknownIOError.Generate().release()), Return(0) )); EXPECT_CALL(mock_logger, Error(HasSubstr("cannot send"))); - auto err = tcp_server.SendResponseAndSlotData(1, &tmp, &expectedRequest, &expectedMeta); + auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, 30, &tmp, &expectedMeta); ASSERT_THAT(err, Ne(nullptr)); } @@ -277,17 +277,16 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendResponseError) { TEST_F(TCPServerTests, SendResponseAndSlotData_SendDataError) { asapo::GenericNetworkResponse tmp {}; - - asapo::GenericRequestHeader expectedRequest {}; + asapo::ReceiverDataServerRequest expectedRequest {{}, 30}; asapo::CacheMeta expectedMeta {}; expectedMeta.id = 20; expectedMeta.addr = (void*)0x9234; expectedMeta.size = 50; expectedMeta.lock = 123; - EXPECT_CALL(mock_io, Send_t(1, &tmp, sizeof(asapo::GenericNetworkResponse), _)) + EXPECT_CALL(mock_io, Send_t(30, &tmp, sizeof(asapo::GenericNetworkResponse), _)) .WillOnce(Return(1)); - EXPECT_CALL(mock_io, Send_t(1, expectedMeta.addr, expectedMeta.size, _)) + EXPECT_CALL(mock_io, Send_t(30, expectedMeta.addr, expectedMeta.size, _)) .WillOnce( DoAll( testing::SetArgPointee<3>(asapo::IOErrorTemplates::kUnknownIOError.Generate().release()), @@ -296,7 +295,7 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendDataError) { EXPECT_CALL(mock_logger, Error(HasSubstr("cannot send"))); - auto err = tcp_server.SendResponseAndSlotData(1, &tmp, &expectedRequest, &expectedMeta); + auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, 30, &tmp, &expectedMeta); ASSERT_THAT(err, Ne(nullptr)); } @@ -304,20 +303,19 @@ TEST_F(TCPServerTests, SendResponseAndSlotData_SendDataError) { TEST_F(TCPServerTests, SendResponseAndSlotData_Ok) { asapo::GenericNetworkResponse tmp {}; - - asapo::GenericRequestHeader expectedRequest {}; + asapo::ReceiverDataServerRequest expectedRequest {{}, 30}; asapo::CacheMeta expectedMeta {}; expectedMeta.id = 20; expectedMeta.addr = (void*)0x9234; expectedMeta.size = 50; expectedMeta.lock = 123; - EXPECT_CALL(mock_io, Send_t(1, &tmp, sizeof(asapo::GenericNetworkResponse), _)) + EXPECT_CALL(mock_io, Send_t(30, &tmp, sizeof(asapo::GenericNetworkResponse), _)) .WillOnce(Return(1)); - EXPECT_CALL(mock_io, Send_t(1, expectedMeta.addr, expectedMeta.size, _)) + EXPECT_CALL(mock_io, Send_t(30, expectedMeta.addr, expectedMeta.size, _)) .WillOnce(Return(expectedMeta.size)); - auto err = tcp_server.SendResponseAndSlotData(1, &tmp, &expectedRequest, &expectedMeta); + auto err = tcp_server.SendResponseAndSlotData(&expectedRequest, 30, &tmp, &expectedMeta); ASSERT_THAT(err, Eq(nullptr)); }