001 /*
002 * Copyright 2009 Red Hat, Inc.
003 * Red Hat licenses this file to you under the Apache License, version
004 * 2.0 (the "License"); you may not use this file except in compliance
005 * with the License. You may obtain a copy of the License at
006 * http://www.apache.org/licenses/LICENSE-2.0
007 * Unless required by applicable law or agreed to in writing, software
008 * distributed under the License is distributed on an "AS IS" BASIS,
009 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
010 * implied. See the License for the specific language governing
011 * permissions and limitations under the License.
012 */
013
014 package org.hornetq.spi.core.protocol;
015
016 import java.util.List;
017
018 import org.hornetq.api.core.HornetQBuffer;
019 import org.hornetq.api.core.HornetQException;
020 import org.hornetq.core.remoting.CloseListener;
021 import org.hornetq.core.remoting.FailureListener;
022 import org.hornetq.spi.core.remoting.BufferHandler;
023 import org.hornetq.spi.core.remoting.Connection;
024
025 /**
026 * A RemotingConnection is a connection between a client and a server.
027 *
028 * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
029 * @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a>
030 */
031 public interface RemotingConnection extends BufferHandler
032 {
033 /**
034 * returns the unique id of the Remoting Connection
035 *
036 * @return the id
037 */
038 Object getID();
039
040 /**
041 * Returns the creation time of the Remoting connection
042 */
043 long getCreationTime();
044
045 /**
046 * returns a string representation of the remote address of this connection
047 *
048 * @return the remote address
049 */
050 String getRemoteAddress();
051
052 /**
053 * add a failure listener.
054 * <p/>
055 * The listener will be called in the event of connection failure.
056 *
057 * @param listener the listener
058 */
059 void addFailureListener(FailureListener listener);
060
061 /**
062 * remove the failure listener
063 *
064 * @param listener the lister to remove
065 * @return true if removed
066 */
067 boolean removeFailureListener(FailureListener listener);
068
069 /**
070 * add a CloseListener.
071 * <p/>
072 * This will be called in the event of the connection being closed.
073 *
074 * @param listener the listener to add
075 */
076 void addCloseListener(CloseListener listener);
077
078 /**
079 * remove a Close Listener
080 *
081 * @param listener the listener to remove
082 * @return true if removed
083 */
084 boolean removeCloseListener(CloseListener listener);
085
086 List<CloseListener> removeCloseListeners();
087
088 void setCloseListeners(List<CloseListener> listeners);
089
090
091 /**
092 * return all the failure listeners
093 *
094 * @return the listeners
095 */
096 List<FailureListener> getFailureListeners();
097
098 List<FailureListener> removeFailureListeners();
099
100
101 /**
102 * set the failure listeners.
103 * <p/>
104 * These will be called in the event of the connection being closed. Any previosuly added listeners will be removed.
105 *
106 * @param listeners the listeners to add.
107 */
108 void setFailureListeners(List<FailureListener> listeners);
109
110 /**
111 * creates a new HornetQBuffer of the specified size.
112 *
113 * @param size the size of buffer required
114 * @return the buffer
115 */
116 HornetQBuffer createBuffer(int size);
117
118 /**
119 * called when the underlying connection fails.
120 *
121 * @param me the exception that caused the failure
122 */
123 void fail(HornetQException me);
124
125 /**
126 * destroys this connection.
127 */
128 void destroy();
129
130 /**
131 * return the underlying Connection.
132 *
133 * @return the connection
134 */
135 Connection getTransportConnection();
136
137 /**
138 * returns whether or not the Remoting Connection is a client
139 *
140 * @return true if client, false if a server
141 */
142 boolean isClient();
143
144 /**
145 * returns true if this Remoting Connection has been destroyed.
146 *
147 * @return true if destroyed, otherwise false
148 */
149 boolean isDestroyed();
150
151 /**
152 * Disconnect the connection, closing all channels
153 */
154 void disconnect();
155
156 /**
157 * returns true if any data has been received since the last time this method was called.
158 *
159 * @return true if data has been received.
160 */
161 boolean checkDataReceived();
162
163 /**
164 * flush all outstanding data from the connection.
165 */
166 void flush();
167
168 }