Create MessageProtocol interface

This commit is contained in:
Gaa56
2025-10-22 19:19:28 +01:00
parent af9b091e76
commit 3fe467a2a3

View File

@@ -0,0 +1,44 @@
package sd.protocol;
import java.io.Serializable;
import sd.model.MessageType;
/**
* Interface que define o contrato para todas as mensagens trocadas no simulador.
* Garante que qualquer mensagem possa ser identificada e roteada.
* * Esta interface estende Serializable para permitir que os objetos que a implementam
* sejam enviados através de Sockets (ObjectOutputStream).
*
*/
public interface MessageProtocol extends Serializable {
/**
* Retorna o tipo da mensagem, indicando o seu propósito.
* @return O MessageType (ex: VEHICLE_TRANSFER, STATS_UPDATE).
*/
MessageType getType();
/**
* Retorna o objeto de dados (carga útil) que esta mensagem transporta.
* O tipo de objeto dependerá do MessageType.
* * - Se getType() == VEHICLE_TRANSFER, o payload será um objeto {@link sd.model.Vehicle}.
* - Se getType() == STATS_UPDATE, o payload será um objeto de estatísticas.
* * @return O objeto de dados (payload), que também deve ser Serializable.
*/
Object getPayload();
/**
* Retorna o ID do nó (Processo) que enviou esta mensagem.
* @return String (ex: "Cr1", "Cr5", "S").
*/
String getSourceNode();
/**
* Retorna o ID do nó (Processo) de destino desta mensagem.
* @return String (ex: "Cr2", "DashboardServer").
*/
String getDestinationNode();
}