TCPSink

TCPSink task sends data via socket to vispublisher which further distributes a selection of data to user clients such as vis and spd. Two-stage data distribution approach allows us to decouple the real time application such as ingest pipeline from user-defined applications capable of creating excessive processing loads. Due to the shear amount of data we do not expect that this task can be scaled up to full ASKAP. But nothing stops us to continue using it with, e.g. frequency-averaged data. The code was specifically designed to be as graceful as possible on the core functionality of the ingest pipeline if send operaton cannot keep up (i.e. monitoring of the data should be affected first before normal functionality of the ingest pipeline).

Configuration Parameters

The program requires a configuration file be provided on the command line. This section describes the valid parameters. In addition to mandatory parameters which are always required, individual tasks often have specific parameters which need to be defined only if a particular task is used. As for all tasks, parameters are taken from keys with tasks.name.params prefix (not shown in the table below) where name is an arbitrary name assigned to this task and used in tasklist (this allows us to run the same task more than once with different parameters. The type of the task defined by tasks.name.type should be set to TCPSink.

Parameter Type Default Description
dest.hostname string None Hostname to send the data to, i.e. machine which runs vispublisher. This task doesn’t fail in the case of any network error.
dest.port string None Port number to use. It is passed as a string to asio library.
bypass boolean None This is hopefully a temporary parameter while we have to rely on the legacy vis/spd in operations. These monitoring scripts have difficulties dealing with the parallel streams of data used for the full ASKAP system. Therefore, some hacks are in place to only send the first frequency chunk of data to vispublisher. These hacks are not generic enough and specific to particular deployment of ingest pipeline we have now. They are only executed if this parameter is true. Otherwise, all data are sent along.

Example

########################## TCPSink ##############################

tasks.tasklist = [MergedSource, Merge, CalcUVWTask, FringeRotationTask, MSSink, TCPSink]

# sink task sending the data for monitoring via vis and spd
tasks.TCPSink.params.dest.hostname = aktos11.atnf.csiro.au
tasks.TCPSink.params.dest.port = 9001
tasks.TCPSink.params.bypass = false
# type of the task
tasks.TCPSink.type = TCPSink