socket_write RCC Worker
Detail
Because OpenCPI maintains backwards compatibility with older compilers, a fully-compliant C++11 environment is not required. However, the workaround for non-C++11-compliance is that the ASIO library has dependencies on the Boost2 library, e.g. on CentOS 6, it requires the boost-devel, boost-thread, and boost-static RPMs. To build this component targeting a non-x86 platform, the vendor must provide the appropriate boost_system and boost_thread static library files. The Worker’s build system will attempt to find them using the locate command in a subdirectory that has ${OCPI_CROSS_HOST} within the path. See the enclosed README file for more information, including how to add new platforms.
Performance and Resource Utilization
Each listening port requires system resources, such as an open file descriptor. When opening more than a handful of ports, the user may need to use ulimit to increase the number of open file descriptors. To do this temporarily, the command ulimit -n 2048 can sometimes fix the currently running shell. Consult the documentation for your Operating System to permanently increase the limit for all processes.
TCP connections have a large overhead when compared to other transport processes, such as the OpenCPI internal messaging system. Currently, this component does not combine Messages to optimize the outbound connection, e.g. taking into account TCP Maximum Segment Size (MSS). It is highly recommended that users of this Component use a minimum message size of 4K or combine multiple messages in some way in an upstream Component.
Data buffers are not returned to the framework nor sent out the optional “out” port until all TCP clients have acknowledged receipt of their data. This may result in throttling or a possible denial-of-service attack if a malicious client connects but never accepts data.
Worker Properties
ocpi_buffer_size_outType:
ushortAccess:
Parameter:
FalseWritable:
FalseInitial:
TrueVolatile:
FalseRead back:
False
Default value:
0
Worker Ports
inProtocol:
NoneOptional:
False
outProtocol:
NoneOptional:
True
Inputs:
Outputs:
Utilization
Utilization reporting is not currently implemented.