xlTransport_go

Transport library for xLattice_go.

Basic Abstractions

XLattice nodes communicate by sending messages over connections. The primitive notions common to all xLattice connections are

Acceptor

An Acceptor is an EndPoint on which a Node listens. On receiving a connection from a far Node, the Acceptor will either reject it or begin the procedure necessary to establish a connection. Usually this involves

Address

An Address is a sequence of bytes sufficient to distinguish a Node within a set of Addresses. The Address may include a local part. For example

In ipv4 and ipv6 it is necessary to distinguish the serialization of the Address from its binary form. The main part of an ipv4 address, for example, is a 32-bit binary value in its wire form, but normally written as a dotted quad, A.B.C.D, in which each byte is represented by its decimal value, a number between 0 and 255 inclusive.

Connection

A Connection is a established relationship between two EndPoints supporting the passage of messages between the two. From the point of view of a participating host, the Connection will have a near EndPoint and a far EndPoint. Both EndPoints must use the same protocol. Usually the Connection will have an associated State, and the Connection will proceed through an ordered sequence of States when it is being established, or the Connection will be closed.

Connector

A Node will normally acquire a number of Peers as it is being set up and with each a Connector. Essentially this is a recipe for establishing a Connection to the Peer; this recipe will normally include at least two of the Peer's RSA public keys, one of which (ck) is used for setting up an encrypted AES session with the Peer.

EndPoint

An EndPoint is identified by the associated Transport and an Address. The Address may include an explicit local part or there may be a default local part included with the Transport. Thus for example the default local part associated with http is 80 and the default associated with https is 443.

As another example, for email the transport is smtp and there is no default Address or local part.

Transport

In the current implementation of xLattice, the only information associated with a Transport is its name, a Unicode string.

Project Status

A minimal implementation with only TCP/IP and UDP transport supported.

Licensing

Creative Commons License
The material on this github.io website is licensed under a Creative Commons Attribution 4.0 International License.

Project software is licensed under an MIT license. Follow the SOFTWARE LICENSE link below for more information on project software licensing.


github link to project project