1 /* 2 * $Id: UMOResponseRouter.java 7963 2007-08-21 08:53:15Z dirk.olmes $ 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.umo.routing; 12 13 import org.mule.umo.UMOEvent; 14 import org.mule.umo.UMOMessage; 15 16 /** 17 * <code>UMOResponseRouter</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 UMOComponent until 21 * the Response Router resolves a reply or times out. 22 */ 23 24 public interface UMOResponseRouter extends UMORouter 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(UMOEvent event) throws RoutingException; 37 38 /** 39 * Called by the Mule framework once the outbound router has been processed on a 40 * component the Message passed in is the response message from the component (or 41 * outbount router if a response was returned). This method is invoked to signal 42 * that the event flow for the component 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 Component 47 * @return the response message sent back to the callee 48 * @throws RoutingException 49 * @see UMOMessage 50 * @see org.mule.umo.UMOComponent 51 */ 52 UMOMessage getResponse(UMOMessage 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 }