Documentation ¶
Overview ¶
Package server provides the Reunion protocol server.
Package server provides the Reunion protocol server.
Index ¶
- type LockedList
- type RequestedReunionState
- type ReunionDatabase
- type ReunionState
- func (s *ReunionState) AppendMessage(message commands.Command) error
- func (s *ReunionState) Marshal() ([]byte, error)
- func (s *ReunionState) Serializable() (*SerializableReunionState, error)
- func (s *ReunionState) SerializableT1Map() (map[[32]byte][]byte, error)
- func (s *ReunionState) Unmarshal(data []byte) error
- type ReunionStates
- func (s *ReunionStates) AppendMessage(message commands.Command) error
- func (s *ReunionStates) AtomicWriteToFile(filePath string) error
- func (s *ReunionStates) GarbageCollectOldEpochs(epochClock epochtime.EpochClock)
- func (s *ReunionStates) GetStateFromEpoch(epoch uint64) (*ReunionState, error)
- func (s *ReunionStates) LoadFromFile(filePath string) error
- func (s *ReunionStates) Marshal() ([]byte, error)
- func (s *ReunionStates) MaybeAddEpochs(epochClock epochtime.EpochClock)
- func (s *ReunionStates) Unmarshal(data []byte) error
- type SerializableReunionState
- type SerializableReunionStates
- type Server
- type T1Message
- type T2Message
- type T2T3Message
- type T3Message
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LockedList ¶
LockedList is used to coordinate access to it's linked list of T2 and T3 messages via the T2Message and T3Message types.
func (*LockedList) Append ¶
func (l *LockedList) Append(item interface{})
Append to linked list after taking mutex.
func (*LockedList) Marshal ¶
func (l *LockedList) Marshal() ([]byte, error)
Marshal returns a CBOR serialization of an consistent snapshot.
func (*LockedList) Range ¶
func (l *LockedList) Range(f func(item interface{}) bool)
Range calls f sequentially for each item in the list. If f returns false, Range stops the iteration.
func (*LockedList) Serializable ¶
func (l *LockedList) Serializable() ([]*T2T3Message, error)
Serializable returns a serializable type representing our list.
type RequestedReunionState ¶
type RequestedReunionState struct { // T1Map maps T1 hashes to T1 messages. T1Map map[[32]byte][]byte // Messages is a slice of *T2T3Message. Messages []*T2T3Message }
RequestedReunionState is the serialized struct type which is sent to the client in response to their fetch state command.
func (*RequestedReunionState) Marshal ¶
func (s *RequestedReunionState) Marshal() ([]byte, error)
Marshal returns a CBOR serialization of the state.
func (*RequestedReunionState) Unmarshal ¶
func (s *RequestedReunionState) Unmarshal(data []byte) error
Unmarshal deserializes the state CBOR blob.
type ReunionDatabase ¶
type ReunionDatabase interface { // Query sends a query command to the Reunion DB and returns the // response command or an error. Query(command commands.Command) (commands.Command, error) CurrentEpochs() ([]uint64, error) }
ReunionDatabase is an interface which represents the Reunion DB that protocol clients interact with.
type ReunionState ¶
type ReunionState struct {
// contains filtered or unexported fields
}
ReunionState is the state of the Reunion DB. This is the type which is fetched by the FetchState command.
func NewReunionState ¶
func NewReunionState() *ReunionState
NewReunionState creates a new ReunionState.
func (*ReunionState) AppendMessage ¶
func (s *ReunionState) AppendMessage(message commands.Command) error
AppendMessage receives a message which can be one of these types: *commands.SendT1 *commands.SendT2 *commands.SendT3
func (*ReunionState) Marshal ¶
func (s *ReunionState) Marshal() ([]byte, error)
Marshal returns a CBOR serialization of an inconsistent snapshot.
func (*ReunionState) Serializable ¶
func (s *ReunionState) Serializable() (*SerializableReunionState, error)
Serializable returns a *SerializableReunionState copy of the data encapsulated in *ReunionState.
func (*ReunionState) SerializableT1Map ¶
func (s *ReunionState) SerializableT1Map() (map[[32]byte][]byte, error)
SerializableT1Map returns a serializable map representing a inconsistent snapshot of our T1 sync.Map.
func (*ReunionState) Unmarshal ¶
func (s *ReunionState) Unmarshal(data []byte) error
Unmarshal deserializes the state CBOR blob.
type ReunionStates ¶
type ReunionStates struct {
// contains filtered or unexported fields
}
ReunionStates is a type encapsulating sync.Map of uint64 -> *ReunionState.
func NewReunionStates ¶
func NewReunionStates() *ReunionStates
NewReunionStates creates a new ReunionStates.
func (*ReunionStates) AppendMessage ¶
func (s *ReunionStates) AppendMessage(message commands.Command) error
AppendMessage receives a message which can be one of these types: *commands.SendT1 *commands.SendT2 *commands.SendT3
func (*ReunionStates) AtomicWriteToFile ¶
func (s *ReunionStates) AtomicWriteToFile(filePath string) error
AtomicWriteToFile atomically writes our state to the file.
func (*ReunionStates) GarbageCollectOldEpochs ¶
func (s *ReunionStates) GarbageCollectOldEpochs(epochClock epochtime.EpochClock)
GarbageCollectOldEpochs remove old epochs from our epochs sync.Map.
func (*ReunionStates) GetStateFromEpoch ¶
func (s *ReunionStates) GetStateFromEpoch(epoch uint64) (*ReunionState, error)
GetStateFromEpoch returns a state given an epoch if such an entry if found in the sync.Map.
func (*ReunionStates) LoadFromFile ¶
func (s *ReunionStates) LoadFromFile(filePath string) error
LoadFromFile loads a ReunionStates from then given file if it exists.
func (*ReunionStates) Marshal ¶
func (s *ReunionStates) Marshal() ([]byte, error)
Marshal returns a CBOR serialization of the state.
func (*ReunionStates) MaybeAddEpochs ¶
func (s *ReunionStates) MaybeAddEpochs(epochClock epochtime.EpochClock)
MaybeAddEpochs adds sync.Map entries for the currenlty valid epochs.
func (*ReunionStates) Unmarshal ¶
func (s *ReunionStates) Unmarshal(data []byte) error
Marshal returns a CBOR serialization of the state.
type SerializableReunionState ¶
type SerializableReunionState struct { // T1Map is a slice of the SendT1 command received from a client. // t1 hash -> t1 T1Map map[[32]byte][]byte // MessageMap: dst t1 hash -> slice of t2/t3 messages MessageMap map[[32]byte][]*T2T3Message }
SerializableReunionState represents the ReunionState in a serializable struct type.
func (*SerializableReunionState) Marshal ¶
func (s *SerializableReunionState) Marshal() ([]byte, error)
Marshal returns a CBOR serialization of the state.
func (*SerializableReunionState) Unmarshal ¶
func (s *SerializableReunionState) Unmarshal(data []byte) error
Unmarshal deserializes the state CBOR blob.
type SerializableReunionStates ¶
type SerializableReunionStates struct {
// contains filtered or unexported fields
}
SerializableReunionStates represents the serializable form of the ReunionStates type.
func (*SerializableReunionStates) Marshal ¶
func (s *SerializableReunionStates) Marshal() ([]byte, error)
Marshal returns a CBOR serialization of the state.
func (*SerializableReunionStates) Unmarshal ¶
func (s *SerializableReunionStates) Unmarshal(data []byte) error
Unmarshal deserializes the state CBOR blob.
type Server ¶
Server is a reunion server.
func NewServer ¶
func NewServer(epochClock epochtime.EpochClock, stateFilePath, logPath, logLevel string) (*Server, error)
NewServer returns a new Server with a new ReunionState.
func NewServerFromStatefile ¶
func NewServerFromStatefile(epochClock epochtime.EpochClock, stateFilePath, logPath, logLevel string) (*Server, error)
NewServerFromStatefile loads the state from a file.
func (*Server) GetNewLogger ¶
GetNewLogger returns a logger for the given subsystem name.
type T1Message ¶
type T1Message struct { // Payload contains the T1 message. Payload []byte }
T1Message is used for serializing ReunionState.
type T2Message ¶
type T2Message struct { // SrcT1Hash is the hash of the T1 message which the sender of // this t2 has sent. SrcT1Hash [sha256.Size]byte // Payload contains the T2 message. Payload []byte }
T2Message is used for serializing ReunionState.
type T2T3Message ¶
type T2T3Message struct { // SrcT1Hash is the hash of the T1 message which the sender of the // t2 or t3 has sent. SrcT1Hash [sha256.Size]byte // T2Payload contains the T2 message. T2Payload []byte // T3Payload contains the T3 message. T3Payload []byte }
T2T3Message is used for serializing ReunionState.
type T3Message ¶
type T3Message struct { // SrcT1Hash is the hash of the T1 message which the sender of // this t3 has sent. SrcT1Hash [sha256.Size]byte // T2Hash is the hash of the T2 message which this T3 message is replying. T2Hash [sha256.Size]byte // Payload contains the T3 message. Payload []byte }
T3Message is used for serializing ReunionState.