1 package org.codehaus.xfire.transport;
2
3 import org.codehaus.xfire.MessageContext;
4 import org.codehaus.xfire.XFireException;
5 import org.codehaus.xfire.exchange.InMessage;
6 import org.codehaus.xfire.exchange.OutMessage;
7
8 /***
9 * A channel for communication. This can be a channel on an underlying transport -
10 * like HTTP - or wrap another channel and provide additional functions - like
11 * reliable messaging.
12 *
13 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
14 */
15 public interface Channel
16 {
17 /***
18 * The URI which represents that a message should be sent over a back channel, i.e.
19 * an HttpServletResponse, instead of opening a new connection.
20 */
21 String BACKCHANNEL_URI = "urn:xfire:channel:backchannel";
22
23 void open() throws Exception;
24
25 /***
26 * Sends a message.
27 * @param context
28 * @param message
29 * @throws XFireException Occurs if there was an error an error sending the message.
30 */
31 void send(MessageContext context, OutMessage message)
32 throws XFireException;
33
34 void receive(MessageContext context, InMessage message);
35
36 void setEndpoint(ChannelEndpoint receiver);
37
38 ChannelEndpoint getEndpoint();
39
40 void close();
41
42 Transport getTransport();
43
44 /***
45 * @return The URI which represents this Channel's endpoint.
46 */
47 String getUri();
48 }