commit inicial do projeto

This commit is contained in:
Júnior
2025-05-23 10:44:32 -03:00
commit 8f04473c0b
106 changed files with 5673 additions and 0 deletions

View File

@ -0,0 +1,39 @@
package consensus
import (
"sync"
)
// MessageHandler é a função chamada quando uma mensagem é recebida.
type MessageHandler func(msg ConsensusMessage)
// Transport simula o envio e recebimento de mensagens de consenso entre nós.
type Transport struct {
handlersMu sync.RWMutex
handlers map[MessageType][]MessageHandler
}
// NewTransport cria um novo transporte de mensagens de consenso.
func NewTransport() *Transport {
return &Transport{
handlers: make(map[MessageType][]MessageHandler),
}
}
// Register adiciona um handler para um tipo de mensagem.
func (t *Transport) Register(msgType MessageType, handler MessageHandler) {
t.handlersMu.Lock()
defer t.handlersMu.Unlock()
t.handlers[msgType] = append(t.handlers[msgType], handler)
}
// Broadcast envia uma mensagem para todos os handlers registrados daquele tipo.
func (t *Transport) Broadcast(msg ConsensusMessage) {
t.handlersMu.RLock()
handlers := t.handlers[msg.Type()]
t.handlersMu.RUnlock()
for _, h := range handlers {
go h(msg) // Envia de forma assíncrona
}
}