/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.channel;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
import de.rcenvironment.core.communication.model.NetworkRequest;
import de.rcenvironment.core.communication.model.NetworkResponse;
/**
* Callback interface for messaging events; intended for monitoring and testing.
*
* @author Robert Mischke
*/
public interface MessageChannelTrafficListener {
/**
* Called when the {@link MessageChannelService} has sent a {@link NetworkRequest}.
*
* @param request the request
*/
void onRequestSentIntoChannel(NetworkRequest request);
/**
* Called when the {@link MessageChannelService} has received a {@link NetworkRequest}, but has not processed it yet.
*
* @param request the received request
* @param sourceId the instance session id of the last hop this request was received from
*/
void onRequestReceivedFromChannel(NetworkRequest request, InstanceNodeSessionId sourceId);
/**
* Called after the connection service has processed a received {@link NetworkRequest}, and is about to send the generated response back
* to the caller.
*
* @param response the generated response; may be null if no handler could process the request
* @param request the received request
* @param sourceId the id of the last hop the request was received from
*/
void onResponseSentIntoChannel(NetworkResponse response, NetworkRequest request, InstanceNodeSessionId sourceId);
// TODO review: add onRequestGenerated/onResponseReceived callbacks? trigger on each hop or only
// on start/end of route? add source/destination parameters? -- misc_ro
}