View Javadoc

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  }