zoukankan      html  css  js  c++  java
  • Spark研究笔记9:重要的工厂类PresenceManager(原创) CVT

    PresenceManager用于用户的在线状态和模式处理,类 Presence 位于org.jivesoftware.smack.packet,说明:

    public enum Type {
    
           /**
            * The user is available to receive messages (default).
            */
            available,
    
            /**
             * The user is unavailable to receive messages.
             */
            unavailable,
    
            /**
             * Request subscription to recipient's presence.
             */
            subscribe,
    
            /**
             * Grant subscription to sender's presence.
             */
            subscribed,
    
            /**
             * Request removal of subscription to sender's presence.
             */
            unsubscribe,
    
            /**
             * Grant removal of subscription to sender's presence.
             */
            unsubscribed,
    
            /**
             * The presence packet contains an error message.
             */
            error
        }
    
        /**
         * An enum to represent the presence mode.
         */
        public enum Mode {
    
            /**
             * Free to chat.
             */
            chat,
    
            /**
             * Available (the default).
             */
            available,
    
            /**
             * Away.
             */
            away,
    
            /**
             * Away for an extended period of time.
             */
            xa,
    
            /**
             * Do not disturb.
             */
            dnd
        }

    /**
         * Returns true if the user is online.
         *
         * @param jid the jid of the user.
         * @return true if online.
         */
        public static boolean isOnline(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            Presence presence = roster.getPresence(jid);
            return presence.isAvailable();
        }
    
        /**
         * Returns true if the user is online and their status is available or free to chat.
         *
         * @param jid the jid of the user.
         * @return true if the user is online and available.
         */
        public static boolean isAvailable(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            Presence presence = roster.getPresence(jid);
            return presence.isAvailable() && !presence.isAway();
        }
    
        /**
         * Returns true if the user is online and their mode is available or free to chat.
         *
         * @param presence the users presence.
         * @return true if the user is online and their mode is available or free to chat.
         */
        public static boolean isAvailable(Presence presence) {
            return presence.isAvailable() && !presence.isAway();
        }
    
        /**
         * 返回用户状态
         *
         * @param jid the users jid.
         * @return the users presence.
         */
        public static Presence getPresence(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            return roster.getPresence(jid);
        }
    
        /**
         * JID完整全称,例如(ex. derek@jivesoftware.com --> derek@jivesoftware.com/spark)
         */
        public static String getFullyQualifiedJID(String jid) {
            final Roster roster = SparkManager.getConnection().getRoster();
            Presence presence = roster.getPresence(jid);
            return presence.getFrom();
        }
  • 相关阅读:
    损失函数VS评估指标
    协程到底是什么?看完这个故事明明白白!
    一个故事看懂AI神经网络工作原理
    一个爬虫的故事:这是人干的事儿?
    深夜,我偷听到程序员要对session下手……
    突然挂了!Redis缓存都在内存中,这下完了!
    还不懂Redis?看完这个故事就明白了!
    可怕!公司部署了一个东西,悄悄盯着你!
    小白怎么入门网络安全?看这篇就够啦!
    CPU有个禁区,内核权限也无法进入!
  • 原文地址:https://www.cnblogs.com/openfire/p/3047621.html
Copyright © 2011-2022 走看看