Documentation ¶
Index ¶
- Constants
- func ShortID(self string) string
- type Clock
- type MessageLog
- type MiddlewareSeq
- func (middleware *MiddlewareSeq) AmITheSequencer() bool
- func (middleware *MiddlewareSeq) ExecSystemMessage(message *api.MessageSeq)
- func (middleware *MiddlewareSeq) GetGroupID() string
- func (middleware *MiddlewareSeq) GetGroupRank() (int, error)
- func (middleware *MiddlewareSeq) GetGroupSize() int
- func (middleware *MiddlewareSeq) MiddlewareWork()
- func (middleware *MiddlewareSeq) Recv(ctx context.Context) (string, error)
- func (middleware *MiddlewareSeq) RecvMsg(ctx context.Context) (*api.MessageSeq, error)
- func (middleware *MiddlewareSeq) Send(ctx context.Context, message string) error
- func (middleware *MiddlewareSeq) SendSys(ctx context.Context, event SystemEvent) error
- func (middleware *MiddlewareSeq) Stop()
- type MulticastGroup
- func (group *MulticastGroup) GetID(rank int) (string, error)
- func (group *MulticastGroup) GetMyID() string
- func (group *MulticastGroup) GetMyRank() (int, error)
- func (group *MulticastGroup) GetRank(ID string) (int, error)
- func (group *MulticastGroup) GetSequencerServices() (net.Addr, error)
- func (group *MulticastGroup) GetUsersInfo() ([]net.Addr, []string, []int, error)
- type Status
- type SystemEvent
- type Users
Constants ¶
const ( TO_SEND Status = 0 SENT = 1 RECEIVED = 2 )
Variables ¶
This section is empty.
Functions ¶
Types ¶
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 (*MulticastGroup) GetMyID ¶
func (group *MulticastGroup) GetMyID() string
func (*MulticastGroup) GetMyRank ¶
func (group *MulticastGroup) GetMyRank() (int, error)
func (*MulticastGroup) GetSequencerServices ¶
func (group *MulticastGroup) GetSequencerServices() (net.Addr, error)
func (*MulticastGroup) GetUsersInfo ¶
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