01: /*
02: * $Id: ResponseRouter.java 10529 2008-01-25 05:58:36Z dfeist $
03: * --------------------------------------------------------------------------------------
04: * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
05: *
06: * The software in this package is published under the terms of the CPAL v1.0
07: * license, a copy of which has been included with this distribution in the
08: * LICENSE.txt file.
09: */
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: * This method is invoked when an event is received via an endpoint on this
27: * Response Router. It is responsible for tieing up the event it receives with
28: * responses waiting to return back to the callee. This method will be called by
29: * a different thread to the getResponse method. The getResponse() method block
30: * the response execution until the process method signals that a match is found.
31: *
32: * @param event
33: * @throws RoutingException
34: */
35: void process(MuleEvent event) throws RoutingException;
36:
37: /**
38: * Called by the Mule framework once the outbound router has been processed on a
39: * service the Message passed in is the response message from the service (or
40: * outbount router if a response was returned). This method is invoked to signal
41: * that the event flow for the service has completed and what ever message is
42: * returned from this method with be sent back as the response. This method will
43: * block until the correct response for the given Message has been received.
44: *
45: * @param message The processed message from the Service
46: * @return the response message sent back to the callee
47: * @throws RoutingException
48: * @see MuleMessage
49: * @see org.mule.api.service.Service
50: */
51: MuleMessage getResponse(MuleMessage message)
52: 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: }
|