Search in sources :

Example 1 with StreamManagementNotEnabledException

use of org.jivesoftware.smack.sm.StreamManagementException.StreamManagementNotEnabledException in project Smack by igniterealtime.

the class XMPPTCPConnection method addStanzaIdAcknowledgedListener.

/**
     * Add a new Stanza ID acknowledged listener for the given ID.
     * <p>
     * The listener will be invoked if the stanza with the given ID was acknowledged by the server. It will
     * automatically be removed after the listener was run.
     * </p>
     * 
     * @param id the stanza ID.
     * @param listener the listener to invoke.
     * @return the previous listener for this stanza ID or null.
     * @throws StreamManagementNotEnabledException if Stream Management is not enabled.
     */
@SuppressWarnings("FutureReturnValueIgnored")
public StanzaListener addStanzaIdAcknowledgedListener(final String id, StanzaListener listener) throws StreamManagementNotEnabledException {
    // Prevent users from adding callbacks that will never get removed
    if (!smWasEnabledAtLeastOnce) {
        throw new StreamManagementException.StreamManagementNotEnabledException();
    }
    // Remove the listener after max. 12 hours
    final int removeAfterSeconds = Math.min(getMaxSmResumptionTime(), 12 * 60 * 60);
    schedule(new Runnable() {

        @Override
        public void run() {
            stanzaIdAcknowledgedListeners.remove(id);
        }
    }, removeAfterSeconds, TimeUnit.SECONDS);
    return stanzaIdAcknowledgedListeners.put(id, listener);
}
Also used : StreamManagementNotEnabledException(org.jivesoftware.smack.sm.StreamManagementException.StreamManagementNotEnabledException) SynchronizationPoint(org.jivesoftware.smack.SynchronizationPoint)

Aggregations

SynchronizationPoint (org.jivesoftware.smack.SynchronizationPoint)1 StreamManagementNotEnabledException (org.jivesoftware.smack.sm.StreamManagementException.StreamManagementNotEnabledException)1