1 /* 2 * $Id: ResponseRouter.java 10529 2008-01-25 05:58:36Z dfeist $ 3 * -------------------------------------------------------------------------------------- 4 * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com 5 * 6 * The software in this package is published under the terms of the CPAL v1.0 7 * license, a copy of which has been included with this distribution in the 8 * LICENSE.txt file. 9 */ 10 11 package org.mule.api.routing; 12 13 import org.mule.api.MuleEvent; 14 import org.mule.api.MuleMessage; 15 16 /** 17 * <code>ResponseRouter</code> is a router that handles response flow. Response 18 * Aggregators are used to collect responses that are usually sent to replyTo 19 * endpoints set on outbound routers. When an event is sent out via an outbound 20 * router, the response router will block the response flow on an Service until 21 * the Response Router resolves a reply or times out. 22 */ 23 24 public interface ResponseRouter extends Router 25 { 26 /** 27 * This method is invoked when an event is received via an endpoint on this 28 * Response Router. It is responsible for tieing up the event it receives with 29 * responses waiting to return back to the callee. This method will be called by 30 * a different thread to the getResponse method. The getResponse() method block 31 * the response execution until the process method signals that a match is found. 32 * 33 * @param event 34 * @throws RoutingException 35 */ 36 void process(MuleEvent event) throws RoutingException; 37 38 /** 39 * Called by the Mule framework once the outbound router has been processed on a 40 * service the Message passed in is the response message from the service (or 41 * outbount router if a response was returned). This method is invoked to signal 42 * that the event flow for the service has completed and what ever message is 43 * returned from this method with be sent back as the response. This method will 44 * block until the correct response for the given Message has been received. 45 * 46 * @param message The processed message from the Service 47 * @return the response message sent back to the callee 48 * @throws RoutingException 49 * @see MuleMessage 50 * @see org.mule.api.service.Service 51 */ 52 MuleMessage getResponse(MuleMessage message) throws RoutingException; 53 54 /** 55 * Sets the timeout delay that the response router should wait for a response for 56 * a given event. If the time expires and exception will be thrown by Mule. 57 * 58 * @param timeout the time in milliseconds to wait for a response event 59 */ 60 void setTimeout(int timeout); 61 62 /** 63 * Returns the timeout delay that the response router should wait for a response 64 * for a given event. If the time expires and exception will be thrown by Mule. 65 * 66 * @return the time in milliseconds to wait for a response event 67 */ 68 int getTimeout(); 69 70 /** 71 * Should the router fail and throw an exception if a timeout occurs or should it return 72 * the events received so far. 73 * //TODO This method is not implemented yet 74 * @param fail 75 */ 76 void setFailOnTimeout(boolean fail); 77 78 /** 79 * Should the router fail and throw an exception if a timeout occurs or should it return 80 * the events received so far. 81 * //TODO This method is not implemented yet 82 * @return 83 */ 84 boolean isFailOnTimeout(); 85 }