Configuration Guide
|
The image below illustrates the timing of an LBT-IPC transport session.
The Source Session Message mechanism enables the receiver to detect when a source goes away and works similarly to LBT-RU. It operates independently of message writes/reads in the Shared Memory Area.
When a source is created, the application can explicitly map it to a transport session by setting the transport_lbtipc_id (source) option. If a previous source was created on the same context with the same ID number, this new source will be mapped to the same transport session. Note that ID numbers can be re-used by different contexts on the same host. The resulting transport sessions will be separate, independent, and non-interfering.
Alternatively, if the application does not explicitly specify a source ID, UM will implicitly assign the new source to a pool of transport sessions defined when the context was created. The pool is defined as a range of ID numbers specified by the options transport_lbtipc_id_low (context) and transport_lbtipc_id_high (context). The numeric range defines the number of transport sessions in the pool.
When a new source is created and the source port is not explicitly defined, UM will check to see how many transport sessions are currently active from the pool within the context. If it is less than the configured range of IDs then UM will use the next ID in the range transport_lbtipc_id_low (context) to transport_lbtipc_id_high (context). However, if the context already has activated all transport sessions in the pool, then the new topic is mapped to one of the existing transport sessions, in round-robin fashion.
Scope: | receiver |
Type: | lbm_ulong_t |
Units: | milliseconds |
Default value: | 60,000 (60 seconds) |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |
Scope: | source |
Type: | lbm_ushort_t |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.0 |
String value | Integer value | Description |
---|---|---|
"source_paced" | LBM_SRC_TOPIC_ATTR_LBTIPC_BEHAVIOR_SOURCE_PACED | Your application writes as fast as it can to the LBT-IPC shared memory area. Slower receivers can experience loss. A source does not consider if any receivers have successfully read a message before it reclaims it. Default for all. |
"receiver_paced" | LBM_SRC_TOPIC_ATTR_LBTIPC_BEHAVIOR_RECEIVER_PACED | Your application writes to the LBT-IPC shared memory area only as fast as the slowest receiver consumes data. A source will not reclaim a message until all receivers have successfully read the message. This slows down all receiver on the LBT-IPC transport session. |
Scope: | context |
Type: | lbm_uint_t |
Units: | bytes |
Default value: | 65535 |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.1/UME 3.1/UMQ 1.1 |
Scope: | receiver |
Type: | lbm_ulong_t |
Units: | milliseconds |
Default value: | 0 |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 6.12 |
Scope: | source |
Type: | lbm_uint16_t |
Default value: | 0 (use open ID) |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |
Scope: | context |
Type: | lbm_uint16_t |
Default value: | 20,005 |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |
Scope: | context |
Type: | lbm_uint16_t |
Default value: | 20,001 |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |
Scope: | source |
Type: | lbm_ushort_t |
Default value: | 20 |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 4.0 |
Scope: | context |
Type: | lbm_ulong_t |
Default value: | 1 |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in UM 6.10 |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
String value | Integer value | Description |
---|---|---|
"embedded" | LBM_CTX_ATTR_OP_EMBEDDED | UM spawns a thread to process received LBT-IPC messages. Default for all. |
"sequential" | LBM_CTX_ATTR_OP_SEQUENTIAL | Your application must call lbm_context_process_lbtipc_messages() to process received LBT-IPC messages. If you also set the context's operational_mode option to sequential, your application must donate an additional thread to service the lbm_context_process_events() calls. Note: You can use sequential mode with the C API, but not with the Java API or .NET API. The Java and .NET APIs do not provide an equivalent lbm_context_process_lbtipc_messages() API for LBT- IPC. |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |
String value | Integer value | Description |
---|---|---|
"pend" | LBM_CTX_ATTR_IPC_RCV_THREAD_PEND | Receiver waits (sleep) for notification from OS that IPC source has updated the signaling semaphore. This option is best when the IPC source frequently writes new data to the shared area. Default for all. |
"busy_wait" | LBM_CTX_ATTR_IPC_RCV_THREAD_BUSY_WAIT | Provides the lowest latency as the receiver monopolizes the CPU core looking for an incremented semaphore. This option works best for infrequent or sporadic message delivery from the IPC source, but involves a CPU cost. |
Scope: | context |
Type: | int |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in UM 6.12 |
Value | Description |
---|---|
1 | Use buffer recycling. |
0 | Buffer recycling is not used. Default for all. |
Scope: | source |
Type: | lbm_ulong_t |
Units: | milliseconds |
Default value: | 10,000 (10 seconds) |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |
Scope: | source |
Type: | size_t |
Units: | bytes |
Default value: | 25165824 (24 MB) |
When to Set: | Can only be set during object initialization. |
Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1 |