Skip to content

jddixon/xlattice_go

Repository files navigation

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

  • is somewhat faster; about 30% in our tests
  • has a number of additional functions for generating random file names, directories of random data, etc

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.

On-line Documentation

More information on the xlattice_go project can be found here

About

a golang implementation of XLattice

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published