This class offers support for general protocol support. It has the following public methods.

init

init(host: +HostV port: +PortI reopen:+ReopenB<=false

Creates a new connection to host +HostV at port +PortI. If +ReopenB is true, the connection will be reopened if it's lost.

query

query(+QueriesRs)

Processes a list of queries.

request

request(+QueryR)

Processes a single query. Both of these methods take records with arguments passed in bound fields and replies passed in unbound ones. All replies have the field status in common with them. Common replies for this are atoms ok, for success, and closed, for a closed connection. A closed connection cannot be reopened; create a new connection if you want it.

close

close

Closes the connection.

bytesRead

bytesRead(AmountIs)

Returns the amount of bytes read by this connection so far. This is a list, with the tail bound when more bytes are read.

Protocol.protocol can be subclassed. It has some additional methods for this use and requires a few methods.

sendText

sendText(vs: +V request:+R<= nil)

Send the text message +V to the host. If +R is not nil, it is passed to the client's port.

parserMsg

parserMsg(+R)

Send message +R to the client from the parser.

parserMsg

parserMsg(+R)

Send message +R to the parser from the client.

parse

parse(+S)

This method has to be defined when implementing new protocols. +S is a list of characters received from the host. The parser typically communicates with the client with parserMsg. When the stream is closed, the parser has to call parserMsg(closed). This method will call itself recursively until the connection is closed.