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 } }