Categorygithub.com/libopenstorage/gossip
repositorypackage
0.0.1-rc1
Repository: https://github.com/libopenstorage/gossip.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# README

gossip

Travis branch Code Coverage

Go implementation of the Gossip protocol.

Overview

This package provides an implementation of an eventually consistent in-memory data store. The data store values are exchanged using a push-pull gossip protocol.

// Create a gossiper
g := NewGossiper("<ip>:<port>", "<unique node id>", "<peer-list>")
// Add peer nodes with whom you want to gossip
g.AddNode("<peer_ip>:<peer_port>")
...
// update self values
g.UpdateSelf("<some_key>", "<any_value>")
// start gossip
g.Start()

These values are exchanged using the gossip protocol between the configured peers.

// Get the current view of the world
storeKeys = g.GetStoreKeys()
for _, key := range storeKeys.List {
	nodeInfoMap := g.GetStoreKeyValue(key)
	for id,  nodeInfo := nodeInfoList.List {
		// if nodeInfo.Status != types.NODE_STATUS_INVALID
        // then nodeInfo has valid data.
	}
}

// Stop gossiping
g.Stop()

Contributing

Testing

To test, run make test. This will run the unit tests

Vendoring

For vendoring, use make vendor and make vendor-update. This project uses Go Modules.