mirror of
https://github.com/vanitasvitae/Smack.git
synced 2024-09-27 18:19:33 +02:00
fcc8414a92
There is a unsolveable race condition between the connection state and sendPacket(), i.e. the connection could go down, right after the method calling sendPacket is called, but before sendPacket() is invoked. Before this change, sendPacket() has thrown an unchecked IllegalStateException, which could be ignored by the Smack user, who would also not notice the race condition. We have decided to throw a checked Exception in this case now, to make the Smack user aware of this situation. SMACK-426
47 lines
1.6 KiB
Java
47 lines
1.6 KiB
Java
/**
|
|
*
|
|
* Copyright 2003-2007 Jive Software.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package org.jivesoftware.smack;
|
|
|
|
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
|
import org.jivesoftware.smack.packet.Packet;
|
|
|
|
/**
|
|
* Provides a mechanism to listen for packets that pass a specified filter.
|
|
* This allows event-style programming -- every time a new packet is found,
|
|
* the {@link #processPacket(Packet)} method will be called. This is the
|
|
* opposite approach to the functionality provided by a {@link PacketCollector}
|
|
* which lets you block while waiting for results.
|
|
*
|
|
* @see XMPPConnection#addPacketListener(PacketListener, org.jivesoftware.smack.filter.PacketFilter)
|
|
* @author Matt Tucker
|
|
*/
|
|
public interface PacketListener {
|
|
|
|
/**
|
|
* Process the next packet sent to this packet listener.<p>
|
|
*
|
|
* A single thread is responsible for invoking all listeners, so
|
|
* it's very important that implementations of this method not block
|
|
* for any extended period of time.
|
|
*
|
|
* @param packet the packet to process.
|
|
*/
|
|
public void processPacket(Packet packet) throws NotConnectedException;
|
|
|
|
}
|