Class OfflineMessageStore

  • All Implemented Interfaces:
    Module, UserEventListener

    public class OfflineMessageStore
    extends BasicModule
    implements UserEventListener
    Represents the user's offline message storage. A message store holds messages that were sent to the user while they were unavailable. The user can retrieve their messages by setting their presence to "available". The messages will then be delivered normally. Offline message storage is optional, in which case a null implementation is returned that always throws UnauthorizedException when adding messages to the store.
    Author:
    Iain Shigeoka
    • Field Detail

      • OFFLINE_AUTOCLEAN_DAYSTOLIVE

        public static final SystemProperty<Duration> OFFLINE_AUTOCLEAN_DAYSTOLIVE
        Members for automatic offline message cleaning
      • OFFLINE_AUTOCLEAN_CHECKINTERVAL

        public static final SystemProperty<Duration> OFFLINE_AUTOCLEAN_CHECKINTERVAL
    • Constructor Detail

      • OfflineMessageStore

        public OfflineMessageStore()
        Constructs a new offline message store.
    • Method Detail

      • getInstance

        public static OfflineMessageStore getInstance()
        Returns the instance of OfflineMessageStore being used by the XMPPServer.
        Returns:
        the instance of OfflineMessageStore being used by the XMPPServer.
      • addMessage

        public OfflineMessage addMessage​(org.xmpp.packet.Message message)
        Adds a message to this message store. Messages will be stored and made available for later delivery. Note that certain messages are ignored by this implementation, for example, messages that are carbon copies, have 'no-store' hints, or for which the intended recipient is not a local user. When a message is discarded for reasons like these, this method will return 'null'.
        Parameters:
        message - the message to store.
        Returns:
        OfflineMessage when data was stored, otherwise null.
      • getMessages

        public Collection<OfflineMessage> getMessages​(String username,
                                                      boolean delete)
        Returns a Collection of all messages in the store for a user. Messages may be deleted after being selected from the database depending on the delete param.
        Parameters:
        username - the username of the user who's messages you'd like to receive.
        delete - true if the offline messages should be deleted.
        Returns:
        An iterator of packets containing all offline messages.
      • getMessage

        public OfflineMessage getMessage​(String username,
                                         Date creationDate)
        Returns the offline message of the specified user with the given creation date. The returned message will NOT be deleted from the database.
        Parameters:
        username - the username of the user who's message you'd like to receive.
        creationDate - the date when the offline message was stored in the database.
        Returns:
        the offline message of the specified user with the given creation stamp.
      • deleteMessages

        public void deleteMessages​(String username)
        Deletes all offline messages in the store for a user.
        Parameters:
        username - the username of the user who's messages are going to be deleted.
      • deleteMessage

        public void deleteMessage​(String username,
                                  Date creationDate)
        Deletes the specified offline message in the store for a user. The way to identify the message to delete is based on the creationDate and username.
        Parameters:
        username - the username of the user who's message is going to be deleted.
        creationDate - the date when the offline message was stored in the database.
      • getCount

        public int getCount​(String username)
        Returns the number of XML messages stored for a particular user.
        Parameters:
        username - the username of the user.
        Returns:
        the amount of stored messages.
      • getSize

        public int getSize​(String username)
        Returns the approximate size (in bytes) of the XML messages stored for a particular user.
        Parameters:
        username - the username of the user.
        Returns:
        the approximate size of stored messages (in bytes).
      • getSize

        public int getSize()
        Returns the approximate size (in bytes) of the XML messages stored for all users.
        Returns:
        the approximate size of all stored messages (in bytes).
      • start

        public void start()
                   throws IllegalStateException
        Description copied from class: BasicModule

        Starts the basic module.

        Inheriting classes that choose to override this method MUST call this start() method before accessing BasicModule resources.

        Specified by:
        start in interface Module
        Overrides:
        start in class BasicModule
        Throws:
        IllegalStateException - If start is called before initialize successfully returns
      • stop

        public void stop()
        Description copied from class: BasicModule

        Stops the basic module.

        Inheriting classes that choose to override this method MUST call this stop() method before accessing BasicModule resources.

        Specified by:
        stop in interface Module
        Overrides:
        stop in class BasicModule
      • readSizeForAllUsers

        public void readSizeForAllUsers()