|
| Context (uint32_t messageQueueSizePower2Num=20, size_t maxPoolClientCount=128, size_t maxMessageSizeRuntime=MaxMessageSize) |
| ctor for construct local non-ipc Context More...
|
|
| Context (char const *ipcTransportName, uint32_t messageQueueSizePower2Num=20, size_t maxPoolClientCount=128, size_t maxMessageSizeRuntime=MaxMessageSize, uint64_t purgerCpuAffinityMask=0xfffffffffffffffful) |
|
| ~Context () |
| dtor More...
|
|
template<typename Client > |
void | addToPool (Client &client, uint64_t poolThreadAffinityIn=0xfffffffffffffffful) |
| add a client to Context's pool - the Client is running in pool mode More...
|
|
template<typename Client , typename... Args> |
void | addToPool (Client &client, uint64_t poolThreadAffinityIn, Args &&...args) |
| add a bunch of clients to Context's pool - the Clients are running in pool mode More...
|
|
size_t | clientCountInPool () const |
| return the numebr of clients added into pool More...
|
|
size_t | parallelConsumerAlive () const |
| how many parallel consummers are started More...
|
|
template<typename... Args> |
void | start (uint16_t poolThreadCount, uint64_t poolThreadsCpuAffinityMask, Args &&...args) |
| start the context and specify its Pool and direct Clients More...
|
|
template<typename Client , typename... Args> |
enable_if<!is_integral< Client >::value, void >::type | start (Client &c, uint64_t cpuAffinity, Args &&...args) |
| start the context (without its Pool) and direct Clients More...
|
|
void | start () |
|
void | stop () |
| stop the message dispatching - asynchronously More...
|
|
void | join () |
| wait until all threads (Pool threads too if apply) of the Context exit More...
|
|
void | setSecondsBetweenPurge (uint32_t s) |
| ipc_creator Context runs a StcuClientPurger to purge crashed (or slow, stuck ...) Clients from the ipc transport to make the ipc trasnport healthy (avoiding buffer full). It periodically looks for things to purge. This is to set the period (default is 60 seconds). More...
|
|
void | runPoolThreadOnce (uint16_t threadSerialNumber) |
| normally not used until you want to run your own message loop More...
|
|
template<typename Client > |
void | runClientThreadOnce (uint16_t threadSerialNumber, Client &c) |
| normally not used until you want to run your own message loop More...
|
|
size_t | maxMessageSize () const |
|
enable_if<!is_integral< M1 >::value, void >::type | send (M0 &&m0, M1 &&m1, Messages &&...msgs) |
| try send a batch of messages to the Context or attached ipc Contexts More...
|
|
void | send (ForwardIt begin, size_t n) |
| send a range of messages to the Context or attached ipc Contexts More...
|
|
void | send (Message &&m) |
| send a message to the Context or attached ipc Contexts More...
|
|
enable_if<!is_integral< M1 >::value, bool >::type | trySend (M0 &&m0, M1 &&m1, Messages &&...msgs) |
| try to send a batch of message to the Context or attached ipc Contexts More...
|
|
bool | trySend (ForwardIt begin, size_t n) |
| try send a range of messages to the Context or attached ipc Contexts More...
|
|
bool | trySend (Message &&m) |
| try to send a message to the Context or attached ipc Contexts More...
|
|
void | sendInPlace (Args &&...args) |
| send a message to all Clients in the Context or attached ipc Contexts More...
|
|
Buffer & | buffer () |
| accessor - mostly used internally More...
|
|
template<size_t MaxMessageSize = 0, typename... ContextProperties>
template<typename... Args>
void hmbdc::app::Context< MaxMessageSize, ContextProperties >::start |
( |
uint16_t |
poolThreadCount, |
|
|
uint64_t |
poolThreadsCpuAffinityMask, |
|
|
Args &&... |
args |
|
) |
| |
|
inline |
start the context and specify its Pool and direct Clients
doesn't compile if the Context does not support a Pool. Usage example: the following starts the pool powered by 3 threads that are affinitied to the lower 8 cores; client0 affinitied to 4th core and client1 affinitied to 5th core the last true value inidicates there will be more direct mode clients to start and messages are kept for those coming later (this only works for broadcast Context not applicable to partition Context). start(3, 0xfful, client0, 0x8ul, client1, 0x10ul, true);
- Template Parameters
-
- Parameters
-
poolThreadCount | how many threads to power the Pool, 0 means no pool |
poolThreadsCpuAffinityMask | which cores, the pool threads to run on |
args | pairs of direct mode Client and its cpuAffinity; optionally followed by a bool as the last arg (default false), false to indicate there is no more direct mode Client to start. If a cpuAffinity is 0, the Client's affinity rotates to one of the cores in the system |
template<size_t MaxMessageSize = 0, typename... ContextProperties>
template<typename Client , typename... Args>
enable_if<!is_integral<Client>::value, void>::type hmbdc::app::Context< MaxMessageSize, ContextProperties >::start |
( |
Client & |
c, |
|
|
uint64_t |
cpuAffinity, |
|
|
Args &&... |
args |
|
) |
| |
|
inline |
start the context (without its Pool) and direct Clients
the following starts client0 affinitied to 4th core and client1 affinitied to 5th core AND there is no more direct mode clients to start (since no bool at the end) start(client0, 0x8ul, client1, 0x10ul);
- Template Parameters
-
- Parameters
-
args | pairs of direct mode Client and its cpuAffinity; optionally followed by a bool as the last arg (default false), false to indicate there is no more direct mode Client to start. If a cpuAffinity is 0, the Client's affinity rotates to one of the cores in the system |