crdt

package
v0.19.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 27, 2017 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DecodeIndex

func DecodeIndex(r io.Reader) (Index, []InvalidIndexEntry, error)

func DecodeNamespace

func DecodeNamespace(r io.Reader) (Namespace, []InvalidNamespaceEntry, error)

func IsNilPath

func IsNilPath(path IPFSPath) bool

func MakeIndexEntryMessage

func MakeIndexEntryMessage(entry IndexStreamEntry) *proto.IndexEntryMessage

func MakeIndexStream

func MakeIndexStream(index Index) ([]IndexStreamEntry, []InvalidIndexEntry)

func MakeIndexStreamMessage

func MakeIndexStreamMessage(stream []IndexStreamEntry) *proto.IndexMessage

func MakeLinkMessage

func MakeLinkMessage(link Link) (*proto.LinkMessage, error)

func MakeNamespaceEntryMessage

func MakeNamespaceEntryMessage(entry NamespaceStreamEntry) *proto.NamespaceEntryMessage

func MakeNamespaceStreamMessage

func MakeNamespaceStreamMessage(stream []NamespaceStreamEntry) *proto.NamespaceMessage

func MakePointMessage

func MakePointMessage(point StreamPoint) *proto.PointMessage

func MakeRowStream

func MakeRowStream(tableKey TableName, rowKey RowName, row Row) ([]NamespaceStreamEntry, []InvalidNamespaceEntry)

func MakeTableStream

func MakeTableStream(tableKey TableName, table Table) ([]NamespaceStreamEntry, []InvalidNamespaceEntry)

func ReadIndexMessage

func ReadIndexMessage(message *proto.IndexMessage) (Index, []InvalidIndexEntry)

func ReadIndexStream

func ReadIndexStream(stream []IndexStreamEntry) (Index, []InvalidIndexEntry)

func ReadNamespaceMessage

func ReadNamespaceMessage(message *proto.NamespaceMessage) (Namespace, []InvalidNamespaceEntry)

func ReadNamespaceStream

func ReadNamespaceStream(stream []NamespaceStreamEntry) (Namespace, []InvalidNamespaceEntry)

func SortNamespaceStream

func SortNamespaceStream(stream []NamespaceStreamEntry)

Types

type Entry

type Entry struct {
	Set []Point
}

func EmptyEntry

func EmptyEntry() Entry

func GenEntry added in v0.19.0

func GenEntry(rand *rand.Rand, size int) Entry

func MakeEntry

func MakeEntry(set []Point) Entry

func (Entry) Copy

func (e Entry) Copy() Entry

func (Entry) Equals

func (e Entry) Equals(other Entry) bool

func (Entry) FilterVerified

func (e Entry) FilterVerified(keys []crypto.PublicKey) Entry

func (Entry) GetValues

func (e Entry) GetValues() []Point

func (Entry) JoinEntry

func (e Entry) JoinEntry(other Entry) Entry

type EntryName

type EntryName string

type IPFSPath

type IPFSPath string
const NIL_PATH IPFSPath = ""

type Index

type Index struct {
	Index map[TableName][]Link
}

func EmptyIndex

func EmptyIndex() Index

func GenIndex

func GenIndex(rand *rand.Rand, size int) Index

func MakeIndex

func MakeIndex(indices map[TableName]Link) Index

func (Index) AllTables

func (index Index) AllTables() []TableName

func (Index) Copy

func (index Index) Copy() Index

func (Index) Equals

func (index Index) Equals(other Index) bool

Equals does not take into account any invalid signatures.

func (Index) ForTable

func (index Index) ForTable(tableName TableName, f func(link Link)) error

func (Index) GetTableAddrs

func (index Index) GetTableAddrs(tableName TableName) ([]Link, error)

func (Index) IsEmpty

func (index Index) IsEmpty() bool

func (Index) JoinIndex

func (index Index) JoinIndex(other Index) Index

func (Index) JoinNamespace

func (index Index) JoinNamespace(addr Link, namespace Namespace) Index

func (Index) JoinTable

func (index Index) JoinTable(table TableName, addr ...Link) Index

type IndexStreamEntry

type IndexStreamEntry struct {
	TableName TableName
	Signature crypto.SignatureText
	Link      IPFSPath
}

func MakeIndexStreamEntry

func MakeIndexStreamEntry(t TableName, path IPFSPath, sig crypto.Signature) (IndexStreamEntry, error)

func ReadIndexEntryMessage

func ReadIndexEntryMessage(message *proto.IndexEntryMessage) IndexStreamEntry

func ReadIndexStreamMessage

func ReadIndexStreamMessage(message *proto.IndexMessage) []IndexStreamEntry

type InvalidIndexEntry

type InvalidIndexEntry IndexStreamEntry

func EncodeIndex

func EncodeIndex(index Index, w io.Writer) ([]InvalidIndexEntry, error)

func MakeIndexMessage

func MakeIndexMessage(index Index) (*proto.IndexMessage, []InvalidIndexEntry)

type InvalidNamespaceEntry

type InvalidNamespaceEntry NamespaceStreamEntry

func EncodeNamespace

func EncodeNamespace(ns Namespace, w io.Writer) ([]InvalidNamespaceEntry, error)

TODO should return the invalid entries

type Link struct {
	// contains filtered or unexported fields
}
func GenLink(rand *rand.Rand, size int) Link
func MergeLinks(links []Link) []Link
func ParseLink(text LinkText) (Link, error)
func PresignedLink(path IPFSPath, sigs []crypto.Signature) Link

func ReadLinkMessage

func ReadLinkMessage(message *proto.LinkMessage) (Link, error)
func SignedLink(path IPFSPath, keys []crypto.PrivateKey) (Link, error)
func UnsignedLink(path IPFSPath) Link

func (Link) Equals

func (link Link) Equals(other Link) bool

func (Link) IsVerifiedBy

func (signed Link) IsVerifiedBy(publicKey crypto.PublicKey) bool

func (Link) IsVerifiedByAny

func (signed Link) IsVerifiedByAny(keys []crypto.PublicKey) bool

func (Link) Path

func (link Link) Path() IPFSPath
func (link Link) SameLink(other Link) bool

func (Link) SameText

func (signed Link) SameText(other signedText) bool

func (Link) Signatures

func (link Link) Signatures() []crypto.Signature

type LinkText

type LinkText string
func SerializeLink(link Link) (LinkText, error)

type Namespace

type Namespace struct {
	Tables map[TableName]Table
}

Semi-lattice type that implements our storage

func EmptyNamespace

func EmptyNamespace() Namespace

func GenNamespace

func GenNamespace(rand *rand.Rand, size int) Namespace

func MakeNamespace

func MakeNamespace(tables map[TableName]Table) Namespace

func (Namespace) Copy

func (ns Namespace) Copy() Namespace

func (Namespace) Equals

func (ns Namespace) Equals(other Namespace) bool

func (Namespace) FilterVerified

func (ns Namespace) FilterVerified(keys []crypto.PublicKey) Namespace

func (Namespace) ForeachEntry

func (ns Namespace) ForeachEntry(f func(t TableName, r RowName, e EntryName, entry Entry))

Iterate through all entries

func (Namespace) ForeachRow added in v0.19.0

func (ns Namespace) ForeachRow(f func(t TableName, r RowName, row Row))

func (Namespace) GetTable

func (ns Namespace) GetTable(key TableName) (Table, error)

func (Namespace) GetTableNames

func (ns Namespace) GetTableNames() []TableName

func (Namespace) IsEmpty

func (ns Namespace) IsEmpty() bool

func (Namespace) JoinNamespace

func (ns Namespace) JoinNamespace(other Namespace) Namespace

func (Namespace) JoinTable

func (ns Namespace) JoinTable(key TableName, table Table) Namespace

func (Namespace) Strip

func (ns Namespace) Strip() (Namespace, []InvalidNamespaceEntry)

Strip removes empty tables and rows that would not be saved to the backing store.

type NamespaceStreamEntry

type NamespaceStreamEntry struct {
	Table TableName
	Row   RowName
	Entry EntryName
	Point StreamPoint
}

FIXME not really a stream, whole is kept in memory.

func ReadNamespaceEntryMessage

func ReadNamespaceEntryMessage(message *proto.NamespaceEntryMessage) NamespaceStreamEntry

func ReadNamespaceStreamMessage

func ReadNamespaceStreamMessage(message *proto.NamespaceMessage) []NamespaceStreamEntry

type Point

type Point struct {
	// contains filtered or unexported fields
}

func PresignedPoint

func PresignedPoint(text PointText, sigs []crypto.Signature) Point

func SignedPoint

func SignedPoint(text PointText, keys []crypto.PrivateKey) (Point, error)

func UnsignedPoint

func UnsignedPoint(text PointText) Point

func (Point) Equals

func (p Point) Equals(other Point) bool

func (Point) HasText

func (p Point) HasText(text string) bool

func (Point) IsVerifiedBy

func (signed Point) IsVerifiedBy(publicKey crypto.PublicKey) bool

func (Point) IsVerifiedByAny

func (signed Point) IsVerifiedByAny(keys []crypto.PublicKey) bool

func (Point) SameText

func (signed Point) SameText(other signedText) bool

func (Point) Signatures

func (p Point) Signatures() []crypto.Signature

func (Point) Text

func (p Point) Text() PointText

type PointText

type PointText string

type Row

type Row struct {
	Entries map[EntryName]Entry
}

func EmptyRow

func EmptyRow() Row

func MakeRow

func MakeRow(entries map[EntryName]Entry) Row

func (Row) Copy

func (row Row) Copy() Row

func (Row) Equals

func (row Row) Equals(other Row) bool

func (Row) ForeachEntry

func (row Row) ForeachEntry(f func(entryName EntryName, entry Entry))

func (Row) GetEntry

func (row Row) GetEntry(entryKey EntryName) (Entry, error)

func (Row) JoinEntry

func (row Row) JoinEntry(entryKey EntryName, entry Entry) Row

func (Row) JoinRow

func (row Row) JoinRow(other Row) Row

type RowName

type RowName string

type StreamPoint

type StreamPoint struct {
	Text      PointText
	Signature crypto.SignatureText
}

func MakeStreamPoint

func MakeStreamPoint(text PointText, sig crypto.Signature) (StreamPoint, error)

func ReadPointMessage

func ReadPointMessage(message *proto.PointMessage) StreamPoint

func (StreamPoint) Equals

func (point StreamPoint) Equals(other StreamPoint) bool

func (StreamPoint) Less

func (point StreamPoint) Less(other StreamPoint) bool

type Table

type Table struct {
	Rows map[RowName]Row
}

TODO improved type validation

func EmptyTable

func EmptyTable() Table

func MakeTable

func MakeTable(rows map[RowName]Row) Table

func (Table) AllRows

func (t Table) AllRows() []Row

func (Table) Copy

func (t Table) Copy() Table

func (Table) Equals

func (t Table) Equals(other Table) bool

func (Table) ForeachEntry

func (t Table) ForeachEntry(f func(rowName RowName, entryName EntryName, entry Entry))

func (Table) ForeachRow

func (t Table) ForeachRow(f func(rowName RowName, r Row))

func (Table) GetRow

func (t Table) GetRow(rowKey RowName) (Row, error)

func (Table) JoinRow

func (t Table) JoinRow(rowKey RowName, row Row) Table

func (Table) JoinTable

func (t Table) JoinTable(other Table) Table

type TableName

type TableName string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL