Documentation ¶
Index ¶
- Constants
- Variables
- func NewFence() string
- func NewUUID() string
- type Client
- func (c *Client) Close()
- func (c *Client) Error(message string)
- func (c *Client) GetHeldLocks() map[string]bool
- func (c *Client) HandleHello(msg *messages.ClientIncomingHello)
- func (c *Client) HandleOff(msg *messages.ClientIncomingOff)
- func (c *Client) HandleOn(msg *messages.ClientIncomingOn)
- func (c *Client) HandleOutgoing()
- func (c *Client) Incoming(src []byte)
- func (c *Client) Outgoing(data []byte)
- func (c *Client) Run()
- type Lock
- type LockManager
- func (lm *LockManager) GetLock(clientId string, name string, timeout time.Duration) *Lock
- func (lm *LockManager) IsLocked(name string) string
- func (lm *LockManager) Release(clientId string, name string)
- func (lm *LockManager) Run()
- func (lm *LockManager) Stop()
- func (lm *LockManager) TryGet(clientId string, name string, timeout time.Duration) *Lock
- func (lm *LockManager) WhoHas(name string) string
- type LockQueue
- type LockRequest
- type LockStatus
- type Locks
- type MessageList
- type NonceGenerator
- type OutMsg
- type Relay
- func (r *Relay) Close()
- func (r *Relay) DoHello(onComplete func())
- func (r *Relay) Error(message string)
- func (r *Relay) Expect(nonce string, onReceive func(messages.Message))
- func (r *Relay) HandleOutgoing()
- func (r *Relay) Incoming(src []byte)
- func (r *Relay) OnCommit(msg *messages.RelayIncomingComm)
- func (r *Relay) OnHello(msg *messages.RelayIncomingHello)
- func (r *Relay) OnPropose(msg *messages.RelayIncomingProp)
- func (r *Relay) OnSchedule(msg *messages.RelayIncomingSched)
- func (r *Relay) Run()
- func (r *Relay) SendBytes(data []byte)
- type RelayConnections
- type RelayList
- type RelayManager
- func (rm *RelayManager) CommLock(name string, timeout time.Duration) bool
- func (rm *RelayManager) GetRelayConnections() (relays RelayList)
- func (rm *RelayManager) GetRelayResponses(request messages.RelayMessage) (results MessageList)
- func (rm *RelayManager) ProposeLock(name string) bool
- func (rm *RelayManager) RelayDisconnected()
- func (rm *RelayManager) Run()
- func (rm *RelayManager) SchedLock(name string) bool
- func (rm *RelayManager) SetRelay(relay *Relay) bool
- func (rm *RelayManager) Stop()
- type Server
Constants ¶
View Source
const ( TYPE_GET = iota TYPE_TRY TYPE_CHECK TYPE_RELEASE )
View Source
const RELAY_ID_PREFIX = "relay:"
View Source
const TEMP_TIMEOUT = time.Second
Variables ¶
View Source
var DEBUG = true
View Source
var WAIT_TIMEOUT = time.Second
Functions ¶
Types ¶
type Client ¶
type Client struct { Server *Server ClientId string Connection net.Conn // contains filtered or unexported fields }
func (*Client) HandleHello ¶
func (c *Client) HandleHello(msg *messages.ClientIncomingHello)
func (*Client) HandleOff ¶
func (c *Client) HandleOff(msg *messages.ClientIncomingOff)
func (*Client) HandleOn ¶
func (c *Client) HandleOn(msg *messages.ClientIncomingOn)
func (*Client) HandleOutgoing ¶
func (c *Client) HandleOutgoing()
type Lock ¶
func (*Lock) MakeValidFor ¶
type LockManager ¶
type LockManager struct {
// contains filtered or unexported fields
}
func NewLockManager ¶
func NewLockManager() *LockManager
func (*LockManager) IsLocked ¶
func (lm *LockManager) IsLocked(name string) string
func (*LockManager) Release ¶
func (lm *LockManager) Release(clientId string, name string)
func (*LockManager) Run ¶
func (lm *LockManager) Run()
func (*LockManager) Stop ¶
func (lm *LockManager) Stop()
func (*LockManager) WhoHas ¶
func (lm *LockManager) WhoHas(name string) string
type LockQueue ¶
type LockQueue map[string][]*LockRequest
type LockRequest ¶
type LockRequest struct { Name string ClientId string Timeout time.Duration Type int Done chan *Lock }
func NewLockReceiver ¶
func NewLockReceiver() *LockRequest
type LockStatus ¶
type MessageList ¶
type NonceGenerator ¶
type NonceGenerator struct {
// contains filtered or unexported fields
}
func NewNonceGenerator ¶
func NewNonceGenerator() *NonceGenerator
func (*NonceGenerator) String ¶
func (ng *NonceGenerator) String() string
func (*NonceGenerator) Uint64 ¶
func (ng *NonceGenerator) Uint64() uint64
type Relay ¶
type Relay struct { Server *Server RelayId string Connection net.Conn Alive bool Nonce *NonceGenerator // contains filtered or unexported fields }
func (*Relay) HandleOutgoing ¶
func (r *Relay) HandleOutgoing()
func (*Relay) OnCommit ¶
func (r *Relay) OnCommit(msg *messages.RelayIncomingComm)
func (*Relay) OnHello ¶
func (r *Relay) OnHello(msg *messages.RelayIncomingHello)
func (*Relay) OnPropose ¶
func (r *Relay) OnPropose(msg *messages.RelayIncomingProp)
func (*Relay) OnSchedule ¶
func (r *Relay) OnSchedule(msg *messages.RelayIncomingSched)
type RelayConnections ¶
type RelayManager ¶
type RelayManager struct { Server *Server CanHaveQuorum bool // contains filtered or unexported fields }
func NewRelayManager ¶
func NewRelayManager(server *Server) *RelayManager
func (*RelayManager) CommLock ¶
func (rm *RelayManager) CommLock(name string, timeout time.Duration) bool
func (*RelayManager) GetRelayConnections ¶
func (rm *RelayManager) GetRelayConnections() (relays RelayList)
func (*RelayManager) GetRelayResponses ¶
func (rm *RelayManager) GetRelayResponses(request messages.RelayMessage) (results MessageList)
func (*RelayManager) ProposeLock ¶
func (rm *RelayManager) ProposeLock(name string) bool
func (*RelayManager) RelayDisconnected ¶
func (rm *RelayManager) RelayDisconnected()
func (*RelayManager) Run ¶
func (rm *RelayManager) Run()
func (*RelayManager) SchedLock ¶
func (rm *RelayManager) SchedLock(name string) bool
func (*RelayManager) SetRelay ¶
func (rm *RelayManager) SetRelay(relay *Relay) bool
func (*RelayManager) Stop ¶
func (rm *RelayManager) Stop()
type Server ¶
type Server struct { Id string Version string Testing bool LockManager *LockManager RelayManager *RelayManager // contains filtered or unexported fields }
func (*Server) GetRelayAddresses ¶
func (*Server) RelayManagerReady ¶
Click to show internal directories.
Click to hide internal directories.