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
XEP-0297 Stanza Forwarding and XEP-0280 Message Carbons
and
XEP-0297: Stanza Forwarding implementation
This patch adds Forwarded.java, a class to wrap messages forwarded
from a different entity. A forwarded stanza contains of a Packet and
an optional timestamp.
WARNING: The current implementation only allows to forward Message
packets, as there is no universal way to parse a Packet from SMACK.
XEP-0280 Message Carbons implementation
This patch adds Carbon.java, a class to wrap the packet extension
defined in XEP-0280 to store copies of messages sent to or received
by a user to his other client(s).
The CarbonManager allows to register XEP-0280 support with the SDM,
to enable and disable the feature and to manipulate messages
accordingly.
Signed-Off-By: Georg Lukas <georg@op-co.de>
git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@13411 b35dd754-fafc-0310-a699-88a17e54d16e