RPS Endpoints
=============

rps-help@cs.northwestern.edu

RPS components can be interconnected at startup time using a variety
of different transport mechanisms, including TCP, UDP, IP Multicast,
Unix domain sockets, files, and pipes.  A "port" on a component is
defined using an EndPoint, which is generally represented as a text
string on the command line.  For example,

host1% loadserver server:tcp:5000 connect:tcp:5001 \
                  target:udp:239.239.239.239:5001

starts up a host load sensor on the current machine which can be
reconfigured via a TCP request/response interaction on port 5000,
provides streaming measurements via TCP to programs that connect to
port 5001, and also sends those streaming measurements to the
multicast group defined by IP address 239.239.239.239 and port 5001.
Similarly,

host2% loadclient source:tcp:host:5001

host3% loadclient source:udp:239.239.239.239:5001

create clients that listen and print those streams using the TCP
method (host2) and the multicast group (host 3).

An endpoint string has three parts: a role, a transport protocol, and
an address.  "server:tcp:5000" means the role is server (ie,
request/response or RPC), the transport protocol is TCP, and the
address is port 5000 on (implicitly) the local host.  

Roles
-----

source
 - the address will operate as a source of streaming measurements

target
 - the address will operate as a sink of streaming measurements

connect
 - the address will operate as a connection point for multiple targets
 - this generally needed only for unix domain sockets and tcp

client
 - the address will operate as the RPC server
 - the protocol is to send a request type and then read a response type.

server
 - the address will operate as a connection point for multiple clients


Protocol
--------

tcp
 - tcp protocol is used

udp 
 - udp protocol is used
 - if the address is a multicast address, then this is ip multicast.
      - source -> join group, and receive stream
      - target -> join group, and send stream

unix
 - unix domain socket

file
 - a file

stdio
 - stdin, stdout, stderr


Address
-------

port number

ip address and port number

pathname

stdin,stdout,stderr


Valid combinations
------------------

source:tcp:address:port

source:udp:address:port

source:unix:pathname

source:file:pathname

source:stdio:stdin|stdout|stderr

target:udp:address:port

target:unix:pathname

target:file:pathname

target:stdio:stdin|stdout|stderr
  
connect:tcp:port

connect:unix:pathname

client:tcp:address:port

client:unix:pathname

server:tcp:port

server:unix:pathname

