Documentation
¶
Overview ¶
Package gridq is a generated protocol buffer package.
It is generated from these files:
gridq.proto
It has these top-level messages:
State ReadResponse WriteResponse Empty
Index ¶
- Constants
- Variables
- func Equal(a, b *Configuration) bool
- func ManagerCreationError(err error) error
- func RegisterStorageServer(s *grpc.Server, srv StorageServer)
- type ConfigNotFoundError
- type Configuration
- func (c *Configuration) ID() uint32
- func (c *Configuration) NodeIDs() []uint32
- func (c *Configuration) Nodes() []*Node
- func (c *Configuration) Read(ctx context.Context, arg *Empty) (*ReadResponse, error)
- func (c *Configuration) Size() int
- func (c *Configuration) String() string
- func (c *Configuration) Write(ctx context.Context, arg *State) (*WriteResponse, error)
- type Empty
- func (*Empty) Descriptor() ([]byte, []int)
- func (m *Empty) Marshal() (dAtA []byte, err error)
- func (m *Empty) MarshalTo(dAtA []byte) (int, error)
- func (*Empty) ProtoMessage()
- func (m *Empty) Reset()
- func (m *Empty) Size() (n int)
- func (this *Empty) String() string
- func (m *Empty) Unmarshal(dAtA []byte) error
- type IllegalConfigError
- type Manager
- func (m *Manager) AddNode(addr string) error
- func (m *Manager) Close()
- func (m *Manager) Configuration(id uint32) (config *Configuration, found bool)
- func (m *Manager) ConfigurationIDs() []uint32
- func (m *Manager) Configurations() []*Configuration
- func (m *Manager) NewConfiguration(ids []uint32, qspec QuorumSpec) (*Configuration, error)
- func (m *Manager) Node(id uint32) (node *Node, found bool)
- func (m *Manager) NodeIDs() []uint32
- func (m *Manager) Nodes() []*Node
- func (m *Manager) Size() (nodes, configs int)
- type ManagerOption
- type MultiSorter
- type Node
- type NodeNotFoundError
- type QuorumCallError
- type QuorumSpec
- type ReadResponse
- func (*ReadResponse) Descriptor() ([]byte, []int)
- func (m *ReadResponse) GetCol() uint32
- func (m *ReadResponse) GetRow() uint32
- func (m *ReadResponse) GetState() *State
- func (m *ReadResponse) Marshal() (dAtA []byte, err error)
- func (m *ReadResponse) MarshalTo(dAtA []byte) (int, error)
- func (*ReadResponse) ProtoMessage()
- func (m *ReadResponse) Reset()
- func (m *ReadResponse) Size() (n int)
- func (this *ReadResponse) String() string
- func (m *ReadResponse) Unmarshal(dAtA []byte) error
- type State
- func (*State) Descriptor() ([]byte, []int)
- func (m *State) GetTimestamp() int64
- func (m *State) GetValue() string
- func (m *State) Marshal() (dAtA []byte, err error)
- func (m *State) MarshalTo(dAtA []byte) (int, error)
- func (*State) ProtoMessage()
- func (m *State) Reset()
- func (m *State) Size() (n int)
- func (this *State) String() string
- func (m *State) Unmarshal(dAtA []byte) error
- type StorageClient
- type StorageServer
- type WriteResponse
- func (*WriteResponse) Descriptor() ([]byte, []int)
- func (m *WriteResponse) GetCol() uint32
- func (m *WriteResponse) GetNew() bool
- func (m *WriteResponse) GetRow() uint32
- func (m *WriteResponse) Marshal() (dAtA []byte, err error)
- func (m *WriteResponse) MarshalTo(dAtA []byte) (int, error)
- func (*WriteResponse) ProtoMessage()
- func (m *WriteResponse) Reset()
- func (m *WriteResponse) Size() (n int)
- func (this *WriteResponse) String() string
- func (m *WriteResponse) Unmarshal(dAtA []byte) error
Constants ¶
const LevelNotSet = -1
LevelNotSet is the zero value level used to indicate that no level (and thereby no reply) has been set for a correctable quorum call.
Variables ¶
var ( ErrInvalidLengthGridq = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowGridq = fmt.Errorf("proto: integer overflow") )
var Error = func(n1, n2 *Node) bool { if n1.lastErr != nil && n2.lastErr == nil { return false } return true }
Error sorts nodes by their LastErr() status in increasing order. A node with LastErr() != nil is larger than a node with LastErr() == nil.
var ID = func(n1, n2 *Node) bool {
return n1.id < n2.id
}
ID sorts nodes by their identifier in increasing order.
var Latency = func(n1, n2 *Node) bool { if n1.latency < 0 { return false } return n1.latency < n2.latency }
Latency sorts nodes by latency in increasing order. Latencies less then zero (sentinel value) are considered greater than any positive latency.
Functions ¶
func Equal ¶
func Equal(a, b *Configuration) bool
Equal returns a boolean reporting whether a and b represents the same configuration.
func ManagerCreationError ¶
ManagerCreationError returns an error reporting that a Manager could not be created due to err.
func RegisterStorageServer ¶
func RegisterStorageServer(s *grpc.Server, srv StorageServer)
Types ¶
type ConfigNotFoundError ¶
type ConfigNotFoundError uint32
A ConfigNotFoundError reports that a specified configuration could not be found.
func (ConfigNotFoundError) Error ¶
func (e ConfigNotFoundError) Error() string
type Configuration ¶
type Configuration struct {
// contains filtered or unexported fields
}
A Configuration represents a static set of nodes on which quorum remote procedure calls may be invoked.
func (*Configuration) ID ¶
func (c *Configuration) ID() uint32
ID reports the identifier for the configuration.
func (*Configuration) NodeIDs ¶
func (c *Configuration) NodeIDs() []uint32
NodeIDs returns a slice containing the local ids of all the nodes in the configuration. IDs are returned in the same order as they were provided in the creation of the Configuration.
func (*Configuration) Nodes ¶
func (c *Configuration) Nodes() []*Node
Nodes returns a slice of each available node. IDs are returned in the same order as they were provided in the creation of the Configuration.
func (*Configuration) Read ¶
func (c *Configuration) Read(ctx context.Context, arg *Empty) (*ReadResponse, error)
Read is invoked as a quorum call on all nodes in configuration c, using the same argument arg, and returns the result.
func (*Configuration) Size ¶
func (c *Configuration) Size() int
Size returns the number of nodes in the configuration.
func (*Configuration) String ¶
func (c *Configuration) String() string
func (*Configuration) Write ¶
func (c *Configuration) Write(ctx context.Context, arg *State) (*WriteResponse, error)
Write is invoked as a quorum call on all nodes in configuration c, using the same argument arg, and returns the result.
type Empty ¶
type Empty struct {
}
func (*Empty) Descriptor ¶
func (*Empty) ProtoMessage ¶
func (*Empty) ProtoMessage()
type IllegalConfigError ¶
type IllegalConfigError string
An IllegalConfigError reports that a specified configuration could not be created.
func (IllegalConfigError) Error ¶
func (e IllegalConfigError) Error() string
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages a pool of node configurations on which quorum remote procedure calls can be made.
func NewManager ¶
func NewManager(nodeAddrs []string, opts ...ManagerOption) (*Manager, error)
NewManager attempts to connect to the given set of node addresses and if successful returns a new Manager containing connections to those nodes.
func (*Manager) AddNode ¶
AddNode attempts to dial to the provide node address. The node is added to the Manager's pool of nodes if a connection was established.
func (*Manager) Close ¶
func (m *Manager) Close()
Close closes all node connections and any client streams.
func (*Manager) Configuration ¶
func (m *Manager) Configuration(id uint32) (config *Configuration, found bool)
Configuration returns the configuration with the given global identifier if present.
func (*Manager) ConfigurationIDs ¶
ConfigurationIDs returns the identifier of each available configuration.
func (*Manager) Configurations ¶
func (m *Manager) Configurations() []*Configuration
Configurations returns a slice of each available configuration.
func (*Manager) NewConfiguration ¶
func (m *Manager) NewConfiguration(ids []uint32, qspec QuorumSpec) (*Configuration, error)
NewConfiguration returns a new configuration given quorum specification and a timeout.
func (*Manager) NodeIDs ¶
NodeIDs returns the identifier of each available node. IDs are returned in the same order as they were provided in the creation of the Manager.
type ManagerOption ¶
type ManagerOption func(*managerOptions)
ManagerOption provides a way to set different options on a new Manager.
func WithGrpcDialOptions ¶
func WithGrpcDialOptions(opts ...grpc.DialOption) ManagerOption
WithGrpcDialOptions returns a ManagerOption which sets any gRPC dial options the Manager should use when initially connecting to each node in its pool.
func WithLogger ¶
func WithLogger(logger *log.Logger) ManagerOption
WithLogger returns a ManagerOption which sets an optional error logger for the Manager.
func WithNoConnect ¶
func WithNoConnect() ManagerOption
WithNoConnect returns a ManagerOption which instructs the Manager not to connect to any of its nodes. Mainly used for testing purposes.
func WithTracing ¶
func WithTracing() ManagerOption
WithTracing controls whether to trace qourum calls for this Manager instance using the golang.org/x/net/trace package. Tracing is currently only supported for regular quorum calls.
type MultiSorter ¶
type MultiSorter struct {
// contains filtered or unexported fields
}
MultiSorter implements the Sort interface, sorting the nodes within.
func OrderedBy ¶
func OrderedBy(less ...lessFunc) *MultiSorter
OrderedBy returns a Sorter that sorts using the less functions, in order. Call its Sort method to sort the data.
func (*MultiSorter) Less ¶
func (ms *MultiSorter) Less(i, j int) bool
Less is part of sort.Interface. It is implemented by looping along the less functions until it finds a comparison that is either Less or !Less. Note that it can call the less functions twice per call. We could change the functions to return -1, 0, 1 and reduce the number of calls for greater efficiency: an exercise for the reader.
func (*MultiSorter) Sort ¶
func (ms *MultiSorter) Sort(nodes []*Node)
Sort sorts the argument slice according to the less functions passed to OrderedBy.
type Node ¶
type Node struct {
StorageClient StorageClient
// contains filtered or unexported fields
}
Node encapsulates the state of a node on which a remote procedure call can be made.
func (*Node) LastErr ¶
LastErr returns the last error encountered (if any) when invoking a remote procedure call on this node.
type NodeNotFoundError ¶
type NodeNotFoundError uint32
A NodeNotFoundError reports that a specified node could not be found.
func (NodeNotFoundError) Error ¶
func (e NodeNotFoundError) Error() string
type QuorumCallError ¶
A QuorumCallError is used to report that a quorum call failed.
func (QuorumCallError) Error ¶
func (e QuorumCallError) Error() string
type QuorumSpec ¶
type QuorumSpec interface {
// ReadQF is the quorum function for the Read
// quorum call method.
ReadQF(replies []*ReadResponse) (*ReadResponse, bool)
// WriteQF is the quorum function for the Write
// quorum call method.
WriteQF(replies []*WriteResponse) (*WriteResponse, bool)
}
QuorumSpec is the interface that wraps every quorum function.
func NewGQMap ¶
func NewGQMap(rows, cols int, printGrid bool) QuorumSpec
NewGQMap returns a gird quorum specification (map version).
func NewGQSliceOne ¶
func NewGQSliceOne(rows, cols int, printGrid bool) QuorumSpec
NewGQSliceOne returns a gird quorum specification (slice version I).
func NewGQSliceTwo ¶
func NewGQSliceTwo(rows, cols int, printGrid bool) QuorumSpec
NewGQSliceTwo returns a gird quorum specification (slice version II).
func NewGQSort ¶
func NewGQSort(rows, cols int, printGrid bool) QuorumSpec
NewGQSort returns a gird quorum specification (sort version).
func NewGQSortNoVis ¶
func NewGQSortNoVis(rows, cols int) QuorumSpec
NewGQSortNoVis returns a gird quorum specification (sort version, no grid visualisation).
type ReadResponse ¶
type ReadResponse struct {
Row uint32 `protobuf:"varint,1,opt,name=row,proto3" json:"row,omitempty"`
Col uint32 `protobuf:"varint,2,opt,name=col,proto3" json:"col,omitempty"`
State *State `protobuf:"bytes,3,opt,name=state" json:"state,omitempty"`
}
func (*ReadResponse) Descriptor ¶
func (*ReadResponse) Descriptor() ([]byte, []int)
func (*ReadResponse) GetCol ¶
func (m *ReadResponse) GetCol() uint32
func (*ReadResponse) GetRow ¶
func (m *ReadResponse) GetRow() uint32
func (*ReadResponse) GetState ¶
func (m *ReadResponse) GetState() *State
func (*ReadResponse) Marshal ¶
func (m *ReadResponse) Marshal() (dAtA []byte, err error)
func (*ReadResponse) ProtoMessage ¶
func (*ReadResponse) ProtoMessage()
func (*ReadResponse) Reset ¶
func (m *ReadResponse) Reset()
func (*ReadResponse) Size ¶
func (m *ReadResponse) Size() (n int)
func (*ReadResponse) String ¶
func (this *ReadResponse) String() string
func (*ReadResponse) Unmarshal ¶
func (m *ReadResponse) Unmarshal(dAtA []byte) error
type State ¶
type State struct {
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}
func (*State) Descriptor ¶
func (*State) GetTimestamp ¶
func (*State) ProtoMessage ¶
func (*State) ProtoMessage()
type StorageClient ¶
type StorageClient interface {
Read(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ReadResponse, error)
Write(ctx context.Context, in *State, opts ...grpc.CallOption) (*WriteResponse, error)
}
func NewStorageClient ¶
func NewStorageClient(cc *grpc.ClientConn) StorageClient
type StorageServer ¶
type StorageServer interface {
Read(context.Context, *Empty) (*ReadResponse, error)
Write(context.Context, *State) (*WriteResponse, error)
}
type WriteResponse ¶
type WriteResponse struct {
Row uint32 `protobuf:"varint,1,opt,name=row,proto3" json:"row,omitempty"`
Col uint32 `protobuf:"varint,2,opt,name=col,proto3" json:"col,omitempty"`
New bool `protobuf:"varint,3,opt,name=new,proto3" json:"new,omitempty"`
}
func (*WriteResponse) Descriptor ¶
func (*WriteResponse) Descriptor() ([]byte, []int)
func (*WriteResponse) GetCol ¶
func (m *WriteResponse) GetCol() uint32
func (*WriteResponse) GetNew ¶
func (m *WriteResponse) GetNew() bool
func (*WriteResponse) GetRow ¶
func (m *WriteResponse) GetRow() uint32
func (*WriteResponse) Marshal ¶
func (m *WriteResponse) Marshal() (dAtA []byte, err error)
func (*WriteResponse) ProtoMessage ¶
func (*WriteResponse) ProtoMessage()
func (*WriteResponse) Reset ¶
func (m *WriteResponse) Reset()
func (*WriteResponse) Size ¶
func (m *WriteResponse) Size() (n int)
func (*WriteResponse) String ¶
func (this *WriteResponse) String() string
func (*WriteResponse) Unmarshal ¶
func (m *WriteResponse) Unmarshal(dAtA []byte) error