Smack's Managers should not remove itself when the connection is closed
or should re-add themselves if the connection get reconnected.
This should also fix some NPE's.
We are currently going with two different designs of Manager: 1. The one
with WeakReferences/WeakHashMaps (SDM, EntityCapsManager) and 2. the one
where the managers remove their listeners on connectionClosed() *and*
connectionClosedOnError(), and later add their listeners on
reconnectionSuccessful(). The first design has the Connection instance
only weak referenced. The other design does reference Connection
strongly (e.g. the 'managers' map in IBBManager/S5BManager), but removes
this references when connectionClosed(onError)() is called.
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/branches/smack_3_3_2@13788 b35dd754-fafc-0310-a699-88a17e54d16e
This patch provides three components required to implement XEP-0184:
* DeliveryReceiptRequest is a PacketExtension to request a receipt
* DeliveryReceipt is a PacketExtension that contains the receipt
* DeliveryReceiptManager to handle sending/receiving of requests and
receipts.
Implementation:
For requesting a receipt, just add a new DeliveryReceiptRequest() to
your message or use the helper function:
DeliveryReceiptManager.addDeliveryReceiptRequest(packet);
Register a ReceiptReceivedListener to find out if your packet arrived:
DeliveryReceiptManager.getInstanceFor(myConnection)
.registerReceiptReceivedListener(new ReceiptReceivedListener() {
@Override public void onReceiptReceived(String fromJid,
String toJid, String receiptId) {
// receipt received for packet id receiptId
}
To answer a receipt request, you can either check incoming packets
manually:
if (DeliveryReceiptManager.hasDeliveryReceiptRequest(packet)) {
// send receipt
}
Or you can enable automatic receipt transmission with:
DeliveryReceiptManager.getInstanceFor(myConnection)
.setAutoReceiptsEnabled(true);
Signed-Off-By: Georg Lukas <georg@op-co.de>
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@13431 b35dd754-fafc-0310-a699-88a17e54d16e