tcp-source

function

Library: TCP/IP client and server support (OMTCP legacy, OmniMark versions 6.0.2 - 7.0)
Include: omtcp.xin

Returns: an external source containing the data read from the tcp connection


Declaration
define external string source function tcp-source
          value tcp-connection  Connection
  timeout value integer         ms         optional
 protocol value IOProtocol      Protocol   optional

Argument definitions

Connection
is an existing tcp-connection object.
ms
is the time to wait for a read operation to complete, expressed in milliseconds.
Protocol
specifies which I/O protocol is to be used.


Purpose

Use tcp-source to obtain an external source object from which data will be read.

Requirements

You must include the following line at the beginning of your OmniMark program:

  include "omtcp.xin"

Connection must exist (else external exception TCP05).

There may not be an active external source derived from Connection with tcp-source (else external exception TCP04).

Usage Notes

If the received packet is corrupted, external exception TCP13 is thrown.

The timeout value applies primarily to data read from the returned external source. If a read operation times out, external exception TCP07 is thrown.

tcp-source can be called more than once for a connection. All such derived sources read from the same source attachment, but such sources are subject to read-ahead, and it is generally the case that a read from a source will actually capture more data than is needed for immediate use. This means that if there are two or more sources derived from a connection, it is usually the case that data read from one such source is not that which immediately follows that read from another such source. As a consequence, only ONE external source can be derived from a connection at a time. That is, sources must be derived serially.

Example


  local tcp-connection Connection-1
  local stream s
  
     set Connection-1 to tcp-connect on "localhost" at 5300
     tcp-set-buffering Connection-1 enabled false
  
     open s with binary-mode as
        tcp-get Connection-1
           protocol IOProtocolMultiPacket
  
     put s "hello world"
     close s
  
     output tcp-source Connection-1
           protocol IOProtocolMultiPacket