diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/messagebus/test/example/server | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/messagebus/test/example/server')
-rw-r--r-- | library/cpp/messagebus/test/example/server/server.cpp | 58 | ||||
-rw-r--r-- | library/cpp/messagebus/test/example/server/ya.make | 13 |
2 files changed, 71 insertions, 0 deletions
diff --git a/library/cpp/messagebus/test/example/server/server.cpp b/library/cpp/messagebus/test/example/server/server.cpp new file mode 100644 index 0000000000..13e52d75f5 --- /dev/null +++ b/library/cpp/messagebus/test/example/server/server.cpp @@ -0,0 +1,58 @@ +#include <library/cpp/messagebus/test/example/common/proto.h> + +using namespace NBus; +using namespace NCalculator; + +namespace NCalculator { + struct TCalculatorServer: public IBusServerHandler { + TCalculatorProtocol Proto; + TBusMessageQueuePtr MessageQueue; + TBusServerSessionPtr ServerSession; + + TCalculatorServer() { + MessageQueue = CreateMessageQueue(); + TBusServerSessionConfig config; + ServerSession = TBusServerSession::Create(&Proto, this, config, MessageQueue); + } + + ~TCalculatorServer() override { + MessageQueue->Stop(); + } + + void OnMessage(TOnMessageContext& request) override { + if (request.GetMessage()->GetHeader()->Type == TRequestSum::MessageType) { + TRequestSum* requestSum = VerifyDynamicCast<TRequestSum*>(request.GetMessage()); + int a = requestSum->Record.GetA(); + int b = requestSum->Record.GetB(); + int result = a + b; + Cerr << "requested " << a << " + " << b << ", sending " << result << "\n"; + TAutoPtr<TResponse> response(new TResponse); + response->Record.SetResult(result); + request.SendReplyMove(response); + } else if (request.GetMessage()->GetHeader()->Type == TRequestMul::MessageType) { + TRequestMul* requestMul = VerifyDynamicCast<TRequestMul*>(request.GetMessage()); + int a = requestMul->Record.GetA(); + int b = requestMul->Record.GetB(); + int result = a * b; + Cerr << "requested " << a << " * " << b << ", sending " << result << "\n"; + TAutoPtr<TResponse> response(new TResponse); + response->Record.SetResult(result); + request.SendReplyMove(response); + } else { + Y_FAIL("unknown request"); + } + } + }; +} + +int main(int, char**) { + TCalculatorServer server; + + Cerr << "listening on port " << server.ServerSession->GetActualListenPort() << "\n"; + + for (;;) { + Sleep(TDuration::Seconds(1)); + } + + return 0; +} diff --git a/library/cpp/messagebus/test/example/server/ya.make b/library/cpp/messagebus/test/example/server/ya.make new file mode 100644 index 0000000000..8cdd97cb12 --- /dev/null +++ b/library/cpp/messagebus/test/example/server/ya.make @@ -0,0 +1,13 @@ +PROGRAM(messagebus_example_server) + +OWNER(g:messagebus) + +PEERDIR( + library/cpp/messagebus/test/example/common +) + +SRCS( + server.cpp +) + +END() |