xlattice_go

An implementation of the open source XLattice project for the Go programming language.

Project Description

XLattice is a communications library and a set of tools for peer-to-peer networks. The library was originally developed in Java; more extensive (although somewhat dated) information on XLattice for Java is available at the Java XLattice website.

Components

XLattice consists of a number of components. Generally speaking, those listed later depend upon some or all of the earlier components.

component Go project documentation
rnglib https://jddixon.github.io/rnglib_go
util https://jddixon.github.io/xlUtil_go
u https://jddixon.github.io/xlU_go
crypto https://jddixon.github.io/xlCrypto_go
transport https://jddixon.github.io/xlTransport_go
protocol https://jddixon.github.io/xlProtocol_go
overlay https://jddixon.github.io/xlOverlay_go
https://jddixon.github.io/xlNodeID_go
node https://jddixon.github.io/xlNode_go
cluster https://jddixon.github.io/xlCluster_go
reg https://jddixon.github.io/xlReg_go
httpd

All of these are currently in development.

rnglib

This version of xlattice_go includes a Go implementation of the python package rnglib for use in testing. rnglib_go is a Go random number generator a drop-in replacement for Go’s random number generator. It

util

u

and an implementation of u, a system for storing files by their content keys.

A store organized by content key

crypto

transport

protocol

Chunks

chunks

overlay

node

reg

xlReg is a tool, primarily intended for use in testing, which facilitates the formation of clusters, groups of cooperating nodes. On registration, a client/member is issued a globally unique NodeID, a 256-bit random value. Once it has an ID, the member can create and/or join clusters. The cluster has a maximum size set when it is created. When members join the cluster they register their two RSA public keys and either one or two IP addresses. If the cluster only supports communications between members, members register only one IP address. If non-members, clients, are allowed to communicate with the cluster, members register a second address for that purpose. When a member has completed registration, it can retrieve the configuration data other members have registered.

The xlReg server, its clients, and the cluster members, are all XLattice nodes.

httpd

Project Status

The Go version of XLattice httpd is very much in development.

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