summaryrefslogtreecommitdiffstats
path: root/library/cpp/messagebus/remote_client_connection.h
diff options
context:
space:
mode:
authorDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <[email protected]>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /library/cpp/messagebus/remote_client_connection.h
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'library/cpp/messagebus/remote_client_connection.h')
-rw-r--r--library/cpp/messagebus/remote_client_connection.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/library/cpp/messagebus/remote_client_connection.h b/library/cpp/messagebus/remote_client_connection.h
new file mode 100644
index 00000000000..fe80b7d2f97
--- /dev/null
+++ b/library/cpp/messagebus/remote_client_connection.h
@@ -0,0 +1,65 @@
+#pragma once
+
+#include "connection.h"
+#include "local_tasks.h"
+#include "remote_client_session.h"
+#include "remote_connection.h"
+
+#include <util/generic/object_counter.h>
+
+namespace NBus {
+ namespace NPrivate {
+ class TRemoteClientConnection: public TRemoteConnection, public TBusClientConnection {
+ friend class TRemoteConnection;
+ friend struct TBusSessionImpl;
+ friend class TRemoteClientSession;
+
+ private:
+ TObjectCounter<TRemoteClientConnection> ObjectCounter;
+
+ TSyncAckMessages AckMessages;
+
+ TLocalTasks TimeToTimeoutMessages;
+
+ IBusClientHandler* const ClientHandler;
+
+ public:
+ TRemoteClientConnection(TRemoteClientSessionPtr session, ui64 id, TNetAddr addr);
+
+ inline TRemoteClientSession* GetSession();
+
+ SOCKET CreateSocket(const TNetAddr& addr);
+
+ void TryConnect() override;
+
+ void HandleEvent(SOCKET socket, void* cookie) override;
+
+ TBusMessage* PopAck(TBusKey id);
+
+ void WriterFillStatus() override;
+
+ void ClearOutgoingQueue(TMessagesPtrs& result, bool reconnect) override;
+
+ void BeforeTryWrite() override;
+
+ void ProcessReplyQueue();
+
+ void MessageSent(TArrayRef<TBusMessagePtrAndHeader> messages) override;
+
+ void TimeoutMessages();
+
+ void ScheduleTimeoutMessages();
+
+ void ReaderProcessMessageUnknownVersion(TArrayRef<const char> dataRef) override;
+
+ EMessageStatus SendMessage(TBusMessage* pMes, bool wait) override;
+
+ EMessageStatus SendMessageOneWay(TBusMessage* pMes, bool wait) override;
+
+ EMessageStatus SendMessageImpl(TBusMessage*, bool wait, bool oneWay);
+
+ void OpenConnection() override;
+ };
+
+ }
+}