server

package
v0.0.0-...-d4ee8a9 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2021 License: BSD-3-Clause, MIT Imports: 15 Imported by: 0

Documentation

Index

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

func NewFence

func NewFence() string

func NewUUID

func NewUUID() string

Types

type Client

type Client struct {
	Server     *Server
	ClientId   string
	Connection net.Conn
	// contains filtered or unexported fields
}

func NewClient

func NewClient(server *Server, connection net.Conn) *Client

func (*Client) Close

func (c *Client) Close()

func (*Client) Error

func (c *Client) Error(message string)

func (*Client) GetHeldLocks

func (c *Client) GetHeldLocks() map[string]bool

/ For unit tests

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()

func (*Client) Incoming

func (c *Client) Incoming(src []byte)

func (*Client) Outgoing

func (c *Client) Outgoing(data []byte)

func (*Client) Run

func (c *Client) Run()

type Lock

type Lock struct {
	Fence    string
	Expires  uint64
	ClientId string
}

func (*Lock) MakeValidFor

func (l *Lock) MakeValidFor(timeout time.Duration)

type LockManager

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

func NewLockManager

func NewLockManager() *LockManager

func (*LockManager) GetLock

func (lm *LockManager) GetLock(clientId string, name string, timeout time.Duration) *Lock

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) TryGet

func (lm *LockManager) TryGet(clientId string, name string, timeout time.Duration) *Lock

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 LockStatus map[string]Lock

type Locks

type Locks map[string]*Lock

type MessageList

type MessageList []messages.Message

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 OutMsg

type OutMsg struct {
	Data []byte
	Done chan bool
}

type Relay

type Relay struct {
	Server     *Server
	RelayId    string
	Connection net.Conn

	Alive bool

	Nonce *NonceGenerator
	// contains filtered or unexported fields
}

func NewRelay

func NewRelay(server *Server, connection net.Conn) *Relay

func (*Relay) Close

func (r *Relay) Close()

func (*Relay) DoHello

func (r *Relay) DoHello(onComplete func())

func (*Relay) Error

func (r *Relay) Error(message string)

func (*Relay) Expect

func (r *Relay) Expect(nonce string, onReceive func(messages.Message))

func (*Relay) HandleOutgoing

func (r *Relay) HandleOutgoing()

func (*Relay) Incoming

func (r *Relay) Incoming(src []byte)

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)

func (*Relay) Run

func (r *Relay) Run()

func (*Relay) SendBytes

func (r *Relay) SendBytes(data []byte)

type RelayConnections

type RelayConnections map[string]*Relay

type RelayList

type RelayList []*Relay

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 NewServer

func NewServer() *Server

func (*Server) DoLock

func (s *Server) DoLock(clientId string, name string, timeout time.Duration) *Lock

func (*Server) GetRelayAddresses

func (s *Server) GetRelayAddresses() []string

func (*Server) RelayManagerReady

func (s *Server) RelayManagerReady(ready bool)

func (*Server) Run

func (s *Server) Run(clientPort int, relayPort int)

Jump to

Keyboard shortcuts

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