SNode.C
Loading...
Searching...
No Matches
core::socket::stream::FlowController< ConcreteFlowController > Class Template Referenceabstract

#include <FlowController.h>

Collaboration diagram for core::socket::stream::FlowController< ConcreteFlowController >:

Public Member Functions

 FlowController (net::config::ConfigInstance *configInstance)
 FlowController (const FlowController &)=delete
FlowControlleroperator= (const FlowController &)=delete
 FlowController (FlowController &&)=delete
FlowControlleroperator= (FlowController &&)=delete
virtual ~FlowController ()
std::string getInstanceName () const
uint64_t getId () const
bool terminateFlow ()
bool isTerminated () const
void stopRetry ()
bool isRetryEnabled () const
ConcreteFlowController * setOnFlowRetry (const std::function< void(ConcreteFlowController *)> &callback)
ConcreteFlowController * setOnFlowCompleted (const std::function< void(uint64_t, const std::string &)> &callback)
ConcreteFlowController * setOnFlowTerminated (const std::function< void(ConcreteFlowController *)> &callback)
void startFlow (const std::function< void()> &callback)

Protected Member Functions

void reportFlowRetry ()
void armRetryTimer (double timeoutSeconds, const std::function< void()> &dispatcher)
virtual void terminateAsyncSubFlow ()=0

Private Member Functions

void cancelRetryTimer ()
void notifyFlowTerminated ()

Private Attributes

uint64_t id {idCounter++}
bool retryEnabled {true}
bool terminated {false}
net::config::ConfigInstanceobservedConfigInstance
std::unique_ptr< core::timer::TimerretryTimer
std::function< void(ConcreteFlowController *)> onFlowRetryCallback
std::function< void(ConcreteFlowController *)> onFlowTerminatedCallback

Static Private Attributes

static uint64_t idCounter

Detailed Description

template<typename ConcreteFlowController>
class core::socket::stream::FlowController< ConcreteFlowController >

Definition at line 65 of file FlowController.h.

Constructor & Destructor Documentation

◆ FlowController() [1/3]

template<typename ConcreteFlowController>
core::socket::stream::FlowController< ConcreteFlowController >::FlowController ( net::config::ConfigInstance * configInstance)

Definition at line 57 of file FlowController.hpp.

60 })
62 }) {
63 }
std::function< void(ConcreteFlowController *)> onFlowTerminatedCallback
FlowController(net::config::ConfigInstance *configInstance)
net::config::ConfigInstance * observedConfigInstance
std::function< void(ConcreteFlowController *)> onFlowRetryCallback

References observedConfigInstance, and onFlowRetryCallback.

Referenced by core::socket::stream::ClientFlowController::ClientFlowController(), and core::socket::stream::ServerFlowController::ServerFlowController().

Here is the caller graph for this function:

◆ FlowController() [2/3]

template<typename ConcreteFlowController>
core::socket::stream::FlowController< ConcreteFlowController >::FlowController ( const FlowController< ConcreteFlowController > & )
delete

◆ FlowController() [3/3]

template<typename ConcreteFlowController>
core::socket::stream::FlowController< ConcreteFlowController >::FlowController ( FlowController< ConcreteFlowController > && )
delete

◆ ~FlowController()

template<typename ConcreteFlowController>
core::socket::stream::FlowController< ConcreteFlowController >::~FlowController ( )
virtualdefault

Member Function Documentation

◆ armRetryTimer()

template<typename ConcreteFlowController>
void core::socket::stream::FlowController< ConcreteFlowController >::armRetryTimer ( double timeoutSeconds,
const std::function< void()> & dispatcher )
protected

Definition at line 161 of file FlowController.hpp.

References retryEnabled, retryTimer, and core::timer::Timer::singleshotTimer().

Here is the call graph for this function:

◆ cancelRetryTimer()

template<typename ConcreteFlowController>
void core::socket::stream::FlowController< ConcreteFlowController >::cancelRetryTimer ( )
private

Definition at line 168 of file FlowController.hpp.

168 {
169 if (retryTimer) {
170 retryTimer->cancel();
171 retryTimer.reset();
172 }
173 }

References core::Timer::cancel(), and retryTimer.

Here is the call graph for this function:

◆ getId()

template<typename ConcreteFlowController>
uint64_t core::socket::stream::FlowController< ConcreteFlowController >::getId ( ) const

Definition at line 74 of file FlowController.hpp.

74 {
75 return id;
76 }

References id.

Referenced by setOnFlowCompleted().

Here is the caller graph for this function:

◆ getInstanceName()

template<typename ConcreteFlowController>
std::string core::socket::stream::FlowController< ConcreteFlowController >::getInstanceName ( ) const

Definition at line 69 of file FlowController.hpp.

69 {
70 return observedConfigInstance->getInstanceName();
71 }

References net::config::ConfigInstance::getInstanceName(), and observedConfigInstance.

Here is the call graph for this function:

◆ isRetryEnabled()

template<typename ConcreteFlowController>
bool core::socket::stream::FlowController< ConcreteFlowController >::isRetryEnabled ( ) const

Definition at line 108 of file FlowController.hpp.

108 {
109 return retryEnabled;
110 }

References retryEnabled.

◆ isTerminated()

template<typename ConcreteFlowController>
bool core::socket::stream::FlowController< ConcreteFlowController >::isTerminated ( ) const

Definition at line 97 of file FlowController.hpp.

References terminated.

◆ notifyFlowTerminated()

template<typename ConcreteFlowController>
void core::socket::stream::FlowController< ConcreteFlowController >::notifyFlowTerminated ( )
private

Definition at line 176 of file FlowController.hpp.

176 {
178 }

References onFlowTerminatedCallback.

◆ operator=() [1/2]

template<typename ConcreteFlowController>
FlowController & core::socket::stream::FlowController< ConcreteFlowController >::operator= ( const FlowController< ConcreteFlowController > & )
delete

◆ operator=() [2/2]

template<typename ConcreteFlowController>
FlowController & core::socket::stream::FlowController< ConcreteFlowController >::operator= ( FlowController< ConcreteFlowController > && )
delete

◆ reportFlowRetry()

template<typename ConcreteFlowController>
void core::socket::stream::FlowController< ConcreteFlowController >::reportFlowRetry ( )
protected

Definition at line 156 of file FlowController.hpp.

156 {
157 onFlowRetryCallback(dynamic_cast<ConcreteFlowController*>(this));
158 }

References onFlowRetryCallback.

◆ setOnFlowCompleted()

template<typename ConcreteFlowController>
ConcreteFlowController * core::socket::stream::FlowController< ConcreteFlowController >::setOnFlowCompleted ( const std::function< void(uint64_t, const std::string &)> & callback)

Definition at line 126 of file FlowController.hpp.

126 {
129 });
130
131 return dynamic_cast<ConcreteFlowController*>(this);
132 }

References getId(), net::config::ConfigInstance::getInstanceName(), observedConfigInstance, and net::config::ConfigInstance::setOnDestroy().

Here is the call graph for this function:

◆ setOnFlowRetry()

template<typename ConcreteFlowController>
ConcreteFlowController * core::socket::stream::FlowController< ConcreteFlowController >::setOnFlowRetry ( const std::function< void(ConcreteFlowController< ConcreteFlowController > *)> & callback)

◆ setOnFlowTerminated()

template<typename ConcreteFlowController>
ConcreteFlowController * core::socket::stream::FlowController< ConcreteFlowController >::setOnFlowTerminated ( const std::function< void(ConcreteFlowController< ConcreteFlowController > *)> & callback)

◆ startFlow()

template<typename ConcreteFlowController>
void core::socket::stream::FlowController< ConcreteFlowController >::startFlow ( const std::function< void()> & callback)

Definition at line 147 of file FlowController.hpp.

147 {
149 if (!terminated) {
150 callback();
151 }
152 });
153 }
static void atNextTick(const std::function< void(void)> &callBack)

References core::EventReceiver::atNextTick(), and terminated.

Here is the call graph for this function:

◆ stopRetry()

template<typename ConcreteFlowController>
void core::socket::stream::FlowController< ConcreteFlowController >::stopRetry ( )

Definition at line 102 of file FlowController.hpp.

102 {
103 retryEnabled = false;
105 }

Referenced by core::socket::stream::ClientFlowController::terminateAsyncSubFlow(), and core::socket::stream::ServerFlowController::terminateAsyncSubFlow().

Here is the caller graph for this function:

◆ terminateAsyncSubFlow()

template<typename ConcreteFlowController>
virtual void core::socket::stream::FlowController< ConcreteFlowController >::terminateAsyncSubFlow ( )
protectedpure virtual

◆ terminateFlow()

template<typename ConcreteFlowController>
bool core::socket::stream::FlowController< ConcreteFlowController >::terminateFlow ( )

Definition at line 79 of file FlowController.hpp.

79 {
80 bool success = false;
81
82 if (!terminated) {
83 terminated = true;
84 retryEnabled = false;
86
89
90 success = true;
91 }
92
93 return success;
94 }

Member Data Documentation

◆ id

template<typename ConcreteFlowController>
uint64_t core::socket::stream::FlowController< ConcreteFlowController >::id {idCounter++}
private

Definition at line 101 of file FlowController.h.

Referenced by getId().

◆ idCounter

template<typename ConcreteFlowController>
uint64_t core::socket::stream::FlowController< ConcreteFlowController >::idCounter
staticprivate

Definition at line 102 of file FlowController.h.

◆ observedConfigInstance

template<typename ConcreteFlowController>
net::config::ConfigInstance* core::socket::stream::FlowController< ConcreteFlowController >::observedConfigInstance
private

Definition at line 109 of file FlowController.h.

Referenced by FlowController(), getInstanceName(), and setOnFlowCompleted().

◆ onFlowRetryCallback

template<typename ConcreteFlowController>
std::function<void(ConcreteFlowController*)> core::socket::stream::FlowController< ConcreteFlowController >::onFlowRetryCallback
private

Definition at line 113 of file FlowController.h.

Referenced by FlowController(), reportFlowRetry(), and setOnFlowRetry().

◆ onFlowTerminatedCallback

template<typename ConcreteFlowController>
std::function<void(ConcreteFlowController*)> core::socket::stream::FlowController< ConcreteFlowController >::onFlowTerminatedCallback
private

Definition at line 114 of file FlowController.h.

Referenced by notifyFlowTerminated(), and setOnFlowTerminated().

◆ retryEnabled

template<typename ConcreteFlowController>
bool core::socket::stream::FlowController< ConcreteFlowController >::retryEnabled {true}
private

Definition at line 106 of file FlowController.h.

106{true};

Referenced by armRetryTimer(), and isRetryEnabled().

◆ retryTimer

template<typename ConcreteFlowController>
std::unique_ptr<core::timer::Timer> core::socket::stream::FlowController< ConcreteFlowController >::retryTimer
private

Definition at line 111 of file FlowController.h.

Referenced by armRetryTimer(), and cancelRetryTimer().

◆ terminated

template<typename ConcreteFlowController>
bool core::socket::stream::FlowController< ConcreteFlowController >::terminated {false}
private

The documentation for this class was generated from the following files: