Class PresenceAbstract

All Implemented Interfaces:
Comparable<XMPPImplIfc>, XMPPImplIfc, XMPPProcessorConcurrencyAwareIfc, XMPPProcessorIfc
Direct Known Subclasses:
PresenceOffline, PresenceState, PresenceSubscription

public abstract class PresenceAbstract extends AnnotatedXMPPProcessor implements XMPPProcessorIfc
Class responsible for handling Presence packets
Author:
Artur Hefczyc
  • Field Details

  • Constructor Details

    • PresenceAbstract

      public PresenceAbstract()
  • Method Details

    • forwardPresence

      protected static void forwardPresence(Queue<Packet> results, Packet packet, JID from)
      Simply forwards packet to the destination
      Parameters:
      results - this a collection with packets which have been generated as input packet processing results.
      packet - to forward
      from - is a JID instance with stanza source address.
    • getRosterUtil

      protected static RosterAbstract getRosterUtil()
      Returns shared instance of class implementing RosterAbstract - either default one (RosterFlat) or the one configured with "roster-implementation" property.
      Returns:
      shared instance of class implementing RosterAbstract
    • prepareProbe

      protected static Element prepareProbe(XMPPResourceConnection session) throws NotAuthorizedException
      Throws:
      NotAuthorizedException
    • requiresPresenceSending

      protected static boolean requiresPresenceSending(RosterAbstract roster, JID buddy, XMPPResourceConnection session, boolean systemCheck) throws NotAuthorizedException, TigaseDBException
      Method checks whether a given contact requires sending presence. In case of enabling option skipOffline and user being offline in the roster the presence is not sent. Alternatively enabling option skipOfflineSys would cause local environment check for user status and omit sending presence if the local use is offline.
      Parameters:
      roster - instance of class implementing RosterAbstract.
      buddy - JID of a contact for which a check is to be performed.
      session - user session which keeps all the user session data and also gives an access to the user's repository data.
      systemCheck - indicates whether the check should be only based on local environment state (true) or rooster state of given user should also be taken into consideration (false).
      Returns:
      {code true} if the contact requires sending presence (e.g. is not online and options skipOffline or skipOfflineSys are enabled)
      Throws:
      NotAuthorizedException
      TigaseDBException
    • sendPresence

      public static Packet sendPresence(StanzaType t, JID from, JID to, Queue<Packet> results, Element pres)
      Sends Presence stanza from provided parameters as well as returns created result Packet object. In case of missing pres parameter a Presence stanza will be created with provided StanzaType type t, JID type from and JID type to. Otherwise Presence stanza pres will be cloned and to attribute will be set from parameter to.
      Parameters:
      t - specifies type of the presence to be send.
      from - is a JID instance with stanza source address.
      to - is a JID instance with stanza destination address.
      results - this a collection with packets which have been generated as input packet processing results.
      pres - an Object of type Element holding Presence stanza to be sent.
      Returns:
      an instance of Packet holding Presence stanza created from provided parameters.
    • sendPresence

      public static void sendPresence(StanzaType t, BareJID from, BareJID to, Queue<Packet> results, Element pres)
      Sends Presence stanza from provided parameters without returning created result Packet object. In case of missing pres parameter a Presence stanza will be created with provided StanzaType type t, JID type from and JID type to. Otherwise Presence stanza pres will be cloned and to attribute will be set from parameter to.
      Parameters:
      t - specifies type of the presence to be send.
      from - is a JID instance with stanza source address.
      to - is a JID instance with stanza destination address.
      results - this a collection with packets which have been generated as input packet processing results.
      pres - an Object of type Element holding Presence stanza to be sent.
    • updatePresenceChange

      public static void updatePresenceChange(Packet presence, XMPPResourceConnection session, Queue<Packet> results) throws NotAuthorizedException
      updatePresenceChange method is used to broadcast to all active resources presence stanza received from other users, like incoming availability presence, subscription presence and so on... Initial presences are however sent only to those resources which already have sent initial presence.
      Parameters:
      presence - an Element presence received from other users, we have to change 'to' attribute to full resource JID.
      session - user session which keeps all the user session data and also gives an access to the user's repository data.
      results - this a collection with packets which have been generated as input packet processing results.
      Throws:
      NotAuthorizedException - if an error occurs
    • updateUserResources

      public static void updateUserResources(Element presence, XMPPResourceConnection session, Queue<Packet> results, boolean initial) throws NotAuthorizedException
      updateUserResources method is used to broadcast to all other resources presence stanza from one user resource. So if new resource connects this method updates presence information about new resource to old resources and about old resources to new resource.
      Parameters:
      presence - an Element presence received from other users, we have to change 'to' attribute to full resource JID.
      session - user session which keeps all the user session data and also gives an access to the user's repository data.
      results - this a collection with packets which have been generated as input packet processing results.
      initial - specifies whether this is an initial presence or not (i.e. if there is a presence data from the presence stored within user session object or not)
      Throws:
      NotAuthorizedException - if an error occurs
    • isSkipOfflineSys

      public boolean isSkipOfflineSys()
    • setSkipOfflineSys

      public void setSkipOfflineSys(boolean skipOfflineSys)
    • isSkipOffline

      public boolean isSkipOffline()
    • setSkipOffline

      public void setSkipOffline(boolean skipOffline)
    • getProbeFullJID

      public boolean getProbeFullJID()
    • setProbeFullJID

      public void setProbeFullJID(boolean probeFullJID)
    • broadcastProbe

      public void broadcastProbe(XMPPResourceConnection session, Queue<Packet> results, Map<String,Object> settings) throws NotAuthorizedException, TigaseDBException
      sendPresenceBroadcast method broadcasts given presence to all buddies from roster and to all users to which direct presence was sent. Before sending presence method calls requiresPresenceSending(), configured to only check local environment status (if enabled) to verify whether presence needs to be sent.
      Parameters:
      session - user session which keeps all the user session data and also gives an access to the user's repository data.
      results - this a collection with packets which have been generated as input packet processing results.
      settings - this map keeps plugin specific settings loaded from the Tigase server configuration.
      Throws:
      NotAuthorizedException - if an error occurs
      TigaseDBException
    • concurrentQueuesNo

      public int concurrentQueuesNo()
      Description copied from interface: XMPPImplIfc
      Methods returns a preferable number of threads/packets queues for the plugin. This number can be overwritten through configuration settings, however, a default value should be reasonably good for most standard installations. It is recommended to assign at least as much as twice a number of CPUs cores for I/O bound processing and number a number equal to CPUs cores for fast processing not slowed down by any I/O.
      Specified by:
      concurrentQueuesNo in interface XMPPImplIfc
      Overrides:
      concurrentQueuesNo in class XMPPProcessor
      Returns:
      an integer preferred number of processing threads for the plugin.