/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.messaging;
import de.rcenvironment.core.communication.model.NetworkResponse;
import de.rcenvironment.core.communication.model.NetworkRequest;
/**
* Service interface for receivers of routed or non-routed {@link NetworkRequest}s. Each request
* must be answered with a {@link NetworkResponse}; failures and exceptions must be wrapped
* accordingly.
*
* @author Robert Mischke
*/
public interface MessageEndpointHandler {
/**
* Called for every received {@link NetworkRequest} that has the local node as its final
* destination.
*
* @param request the received request
* @return the locally generated {@link NetworkResponse}
*/
NetworkResponse onRequestArrivedAtDestination(NetworkRequest request);
/**
* Registers a handler for a given message type.
*
* @param messageType the message type; see {@link ProtocolConstants}
* @param handler the handler instance
*/
void registerRequestHandler(String messageType, NetworkRequestHandler handler);
/**
* Registers one or more handlers for their given message types.
*
* @param newMappings the type/handler mappings to add
*/
void registerRequestHandlers(NetworkRequestHandlerMap newMappings);
}