2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "core/EventReceiver.h"
43#include "core/socket/stream/FlowController.h"
44#include "core/timer/Timer.h"
45#include "net/config/ConfigInstance.h"
47#ifndef DOXYGEN_SHOULD_SKIP_THIS
51namespace core::socket::
stream {
53 template <
typename ConcreteFlowController>
56 template <
typename ConcreteFlowController>
65 template <
typename ConcreteFlowController>
68 template <
typename ConcreteFlowController>
73 template <
typename ConcreteFlowController>
78 template <
typename ConcreteFlowController>
96 template <
typename ConcreteFlowController>
101 template <
typename ConcreteFlowController>
107 template <
typename ConcreteFlowController>
112 template <
typename ConcreteFlowController>
113 ConcreteFlowController*
117 oldCallback(flowController);
118 callback(flowController);
121 return dynamic_cast<ConcreteFlowController*>(
this);
124 template <
typename ConcreteFlowController>
125 ConcreteFlowController*
131 return dynamic_cast<ConcreteFlowController*>(
this);
134 template <
typename ConcreteFlowController>
135 ConcreteFlowController*
139 oldCallback(flowController);
140 callback(flowController);
143 return dynamic_cast<ConcreteFlowController*>(
this);
146 template <
typename ConcreteFlowController>
155 template <
typename ConcreteFlowController>
160 template <
typename ConcreteFlowController>
167 template <
typename ConcreteFlowController>
175 template <
typename ConcreteFlowController>
static void atNextTick(const std::function< void(void)> &callBack)
void observeConnectEventReceiver(core::eventreceiver::ConnectEventReceiver *connectEventReceiver)
std::set< core::eventreceiver::ConnectEventReceiver * > connectEventReceivers
std::unique_ptr< core::timer::Timer > reconnectTimer
void armReconnectTimer(double timeoutSeconds, const std::function< void()> &dispatcher)
void terminateAsyncSubFlow() override
ClientFlowController * setOnFlowReconnect(const std::function< void(ClientFlowController *)> &callback)
std::function< void(ClientFlowController *)> onFlowReconnectCallback
bool isReconnectEnabled() const
void reportFlowReconnect()
ClientFlowController(net::config::ConfigInstance *configInstance)
void cancelReconnectTimer()
std::function< void(ConcreteFlowController *)> onFlowTerminatedCallback
ConcreteFlowController * setOnFlowCompleted(const std::function< void(uint64_t, const std::string &)> &callback)
bool isTerminated() const
void startFlow(const std::function< void()> &callback)
ConcreteFlowController * setOnFlowTerminated(const std::function< void(ConcreteFlowController *)> &callback)
ConcreteFlowController * setOnFlowRetry(const std::function< void(ConcreteFlowController *)> &callback)
bool isRetryEnabled() const
void armRetryTimer(double timeoutSeconds, const std::function< void()> &dispatcher)
FlowController(net::config::ConfigInstance *configInstance)
net::config::ConfigInstance * observedConfigInstance
virtual ~FlowController()
virtual void terminateAsyncSubFlow()=0
std::function< void(ConcreteFlowController *)> onFlowRetryCallback
std::unique_ptr< core::timer::Timer > retryTimer
std::string getInstanceName() const
void notifyFlowTerminated()
static Timer singleshotTimer(const std::function< void()> &dispatcher, const utils::Timeval &timeout)
ConfigInstance * setOnDestroy(const std::function< void(ConfigInstance *)> &onDestroy)
const std::string & getInstanceName() const
uint64_t FlowController< ConcreteFlowController >::idCounter