mirror of
https://github.com/davidalves04/Trabalho-Pratico-SD.git
synced 2025-12-08 20:43:32 +00:00
Create MessageProtocol interface
This commit is contained in:
44
main/src/main/java/sd/protocol/MessageProtocol.java
Normal file
44
main/src/main/java/sd/protocol/MessageProtocol.java
Normal 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();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user