clientseq

package
v0.0.0-...-b7a815f Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2021 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TO_SEND  Status = 0
	SENT            = 1
	RECEIVED        = 2
)

Variables

This section is empty.

Functions

func ShortID

func ShortID(self string) string

Types

type Clock

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

func NewClock

func NewClock() *Clock

func (*Clock) GetClock

func (cl *Clock) GetClock() uint64

func (*Clock) Increase

func (cl *Clock) Increase() uint64

func (*Clock) Update

func (cl *Clock) Update(clock uint64) uint64

type MessageLog

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

func NewMessageLog

func NewMessageLog(out *os.File) *MessageLog

func (*MessageLog) Log

func (log *MessageLog) Log(status Status, message *api.MessageSeq) error

func (*MessageLog) WriteLog

func (log *MessageLog) WriteLog(status Status, message *api.MessageSeq) error

type MiddlewareSeq

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

func NewMiddlewareSeq

func NewMiddlewareSeq(self, groupName, logPath string, port int, nameserver *nameservice.NameServiceClient, verbose bool, dopt []grpc.DialOption, sopt []grpc.ServerOption) (*MiddlewareSeq, error)

Instanzia un nuovo MiddlewareSeq: self: il mio id all 'interno del gruppo groupName: nome del gruppo logPath: path del file dove verra scritto il log di rete. port: porta di ascolte del server grpc. nameserver: client grpc del nameserver verbose: modalita di operazione debug. trySend: indica di non provare a rimandare i messaggi falliti, utile per il debug. dopt: opzioni per i client grpc sopt: Opzioni per il server grpc La scelta del sequencer viene scelta in maniera del tutto arbitraria ed univoca, il peer con ID più piccolo in ordine lessicografico diventa il sequencer. Il sequencer deve avviare un clientSeq extra rivolto verso se stesso per inviare messaggi.

func (*MiddlewareSeq) AmITheSequencer

func (middleware *MiddlewareSeq) AmITheSequencer() bool

Se il rank è 0 (dato dall'ordine lessicografico) allora sono il sequencer.

func (*MiddlewareSeq) ExecSystemMessage

func (middleware *MiddlewareSeq) ExecSystemMessage(message *api.MessageSeq)

func (*MiddlewareSeq) GetGroupID

func (middleware *MiddlewareSeq) GetGroupID() string

func (*MiddlewareSeq) GetGroupRank

func (middleware *MiddlewareSeq) GetGroupRank() (int, error)

func (*MiddlewareSeq) GetGroupSize

func (middleware *MiddlewareSeq) GetGroupSize() int

func (*MiddlewareSeq) MiddlewareWork

func (middleware *MiddlewareSeq) MiddlewareWork()

func (*MiddlewareSeq) Recv

func (middleware *MiddlewareSeq) Recv(ctx context.Context) (string, error)

func (*MiddlewareSeq) RecvMsg

func (middleware *MiddlewareSeq) RecvMsg(ctx context.Context) (*api.MessageSeq, error)

func (*MiddlewareSeq) Send

func (middleware *MiddlewareSeq) Send(ctx context.Context, message string) error

Send:

Invio in multicast:
	Il messaggio viene inviato tramite socket al sequencer.
	Il sequencer invece utilizza il suo client extra per comunicare i suoi messaggi alla sua interfaccia
	server.

func (*MiddlewareSeq) SendSys

func (middleware *MiddlewareSeq) SendSys(ctx context.Context, event SystemEvent) error

func (*MiddlewareSeq) Stop

func (middleware *MiddlewareSeq) Stop()

type MulticastGroup

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

func NewGroup

func NewGroup(self string, users []*pb.User) *MulticastGroup

func (*MulticastGroup) GetID

func (group *MulticastGroup) GetID(rank int) (string, error)

func (*MulticastGroup) GetMyID

func (group *MulticastGroup) GetMyID() string

func (*MulticastGroup) GetMyRank

func (group *MulticastGroup) GetMyRank() (int, error)

func (*MulticastGroup) GetRank

func (group *MulticastGroup) GetRank(ID string) (int, error)

func (*MulticastGroup) GetSequencerServices

func (group *MulticastGroup) GetSequencerServices() (net.Addr, error)

func (*MulticastGroup) GetUsersInfo

func (group *MulticastGroup) GetUsersInfo() ([]net.Addr, []string, []int, error)

type Status

type Status int

func (Status) String

func (status Status) String() string

type SystemEvent

type SystemEvent int
const (
	EXIT  SystemEvent = 0
	FATAL             = 1
)

func EventFromString

func EventFromString(eventStr string) (SystemEvent, error)

func (SystemEvent) String

func (event SystemEvent) String() string

type Users

type Users []*pb.User

func (Users) Len

func (users Users) Len() int

func (Users) Less

func (users Users) Less(i, j int) bool

func (Users) Swap

func (users Users) Swap(i, j int)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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