ConnectionListener.java revision d7955ce24d294fb2014c59d11fca184471056f44
1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile$
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2003-2007 Jive Software.
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License.
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     http://www.apache.org/licenses/LICENSE-2.0
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS,
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License.
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smack;
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/**
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Interface that allows for implementing classes to listen for connection closing
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * and reconnection events. Listeners are registered with Connection objects.
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @see Connection#addConnectionListener
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @see Connection#removeConnectionListener
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Matt Tucker
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic interface ConnectionListener {
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Notification that the connection was closed normally or that the reconnection
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * process has been aborted.
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void connectionClosed();
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * Notification that the connection was closed due to an exception. When
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * abruptly disconnected it is possible for the connection to try reconnecting
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * to the server.
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @param e the exception.
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void connectionClosedOnError(Exception e);
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * The connection will retry to reconnect in the specified number of seconds.
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @param seconds remaining seconds before attempting a reconnection.
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void reconnectingIn(int seconds);
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * The connection has reconnected successfully to the server. Connections will
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * reconnect to the server when the previous socket connection was abruptly closed.
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void reconnectionSuccessful();
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    /**
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * An attempt to connect to the server has failed. The connection will keep trying
64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * reconnecting to the server in a moment.
65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     *
66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     * @param e the exception that caused the reconnection to fail.
67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen     */
68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void reconnectionFailed(Exception e);
69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}