mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2025-09-10 18:59:41 +02:00
Add XMPPConnection.createPacketcollectorAndSend(PacketFilter, Packet)
Using createPacketCollector(filter); sendPacket(packet); was error prone, i.e. the PacketCollector could leak if sendPacket() would throw an exception and the user forgot to call PacketCollector.cancel(). For cases where createPacketCollectorAndSend(IQ) is not sufficient (because we don't send IQs), createPacketCollectorAndSend(PacketFilter, Packet) is now used, which does take care that the PacketCollector does not leak if sendPacket() throws an Exception.
This commit is contained in:
parent
8ce474b0df
commit
98a3c46e9a
8 changed files with 47 additions and 47 deletions
|
@ -301,9 +301,8 @@ public class AgentSession {
|
|||
presence.addExtension(new DefaultPacketExtension(AgentStatus.ELEMENT_NAME,
|
||||
AgentStatus.NAMESPACE));
|
||||
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class), FromMatchesFilter.create(workgroupJID)));
|
||||
|
||||
connection.sendPacket(presence);
|
||||
PacketCollector collector = this.connection.createPacketCollectorAndSend(new AndFilter(
|
||||
new PacketTypeFilter(Presence.class), FromMatchesFilter.create(workgroupJID)), presence);
|
||||
|
||||
presence = (Presence)collector.nextResultOrThrow();
|
||||
|
||||
|
@ -401,11 +400,9 @@ public class AgentSession {
|
|||
presence.addExtension(agentStatus);
|
||||
presence.addExtension(new MetaData(this.metaData));
|
||||
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(
|
||||
PacketCollector collector = this.connection.createPacketCollectorAndSend(new AndFilter(
|
||||
new PacketTypeFilter(Presence.class),
|
||||
FromMatchesFilter.create(workgroupJID)));
|
||||
|
||||
this.connection.sendPacket(presence);
|
||||
FromMatchesFilter.create(workgroupJID)), presence);
|
||||
|
||||
collector.nextResultOrThrow();
|
||||
}
|
||||
|
@ -447,10 +444,8 @@ public class AgentSession {
|
|||
}
|
||||
presence.addExtension(new MetaData(this.metaData));
|
||||
|
||||
PacketCollector collector = this.connection.createPacketCollector(new AndFilter(new PacketTypeFilter(Presence.class),
|
||||
FromMatchesFilter.create(workgroupJID)));
|
||||
|
||||
this.connection.sendPacket(presence);
|
||||
PacketCollector collector = this.connection.createPacketCollectorAndSend(new AndFilter(new PacketTypeFilter(Presence.class),
|
||||
FromMatchesFilter.create(workgroupJID)), presence);
|
||||
|
||||
collector.nextResultOrThrow();
|
||||
}
|
||||
|
|
|
@ -180,10 +180,8 @@ public class Workgroup {
|
|||
directedPresence.setTo(workgroupJID);
|
||||
PacketFilter typeFilter = new PacketTypeFilter(Presence.class);
|
||||
PacketFilter fromFilter = FromMatchesFilter.create(workgroupJID);
|
||||
PacketCollector collector = connection.createPacketCollector(new AndFilter(fromFilter,
|
||||
typeFilter));
|
||||
|
||||
connection.sendPacket(directedPresence);
|
||||
PacketCollector collector = connection.createPacketCollectorAndSend(new AndFilter(fromFilter,
|
||||
typeFilter), directedPresence);
|
||||
|
||||
Presence response = (Presence)collector.nextResultOrThrow();
|
||||
return Presence.Type.available == response.getType();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue