Receives an object through a connected TCP socket.
|inSocket||SocketId||Connected socket ID.|
|inTimeout||Integer*||100 -||Timeout in milliseconds, block if not specified.|
|inAcceptEof||Bool||When false, throws an IoError on attempt to read data from beyond the end of stream; when true interrupts operation without exception in such a case.|
|outObject||<T>?||Received object, or Nil if the operation was interrupted (by timeout or reading beyond the end of stream).|
|outEof||Bool||Indicates whether the operation was interrupted on attempt to get data from beyond the end of stream.|
This filter allows reading arbitrary Adaptive Vision environment objects from a connected socket.
The data which is expected, should be sent by an Adaptive Vision Studio or Adaptive Vision Executor process executing TcpIp_WriteObject filter of the same type.
The inTimeout input specifies the longest possible waiting time, in milliseconds, for the incoming data to be fully received. When no timeout is specified (set to Auto), the execution is blocking. When the filter execution is terminated by timeout condition no data is returned or removed from the input buffer (Nil is returned instead). In such situation the operation can be retried later. When timeout is et to zero the filter performs a single read attempt and returns immediately when no data is available.
The outEof output can be used to detect whether the peer finished transmission and gracefully closed connection on its side. To enable thisinAcceptEof must be set, otherwise connection closing will be treated as erroneous state.
The point in transmission when the other side closes the connection gracefully is known as the end of stream (or End of File - Eof). All TCP/IP reading filters can normally read data remaining in the input buffer even when the connection has been closed, as long as whole required chunk of data is present in the input buffer. However the reaction to the attempt to read from the input buffer beyond the end of stream depends on the inAcceptEof input. When inAcceptEof is set to False the filter will raise IoError when required chunk of data cannot be read. When inAcceptEof is set to True the filter execution is terminated, no data is removed from the input buffer, Nil is returned instead of requested data and the outEof output is set to True. In such situation the socket remains valid and subsequent reads will perform similar data read attempts.
This filter can raise IoError when the connection is disruptively broken or when other network-related error occurred.
For more information about using this filter, please follow the link: Using TCP/IP Communication.
This filter can throw an exception to report error. Read how to deal with errors in Error Handling.
List of possible exceptions:
|IoError||Type mismatch of serialized object in TcpIp_ReadObject.|
This filter is available on Basic Complexity Level.