예제 #1
0
 /// <summary>
 /// Gets the primary presence if given a bare JID.
 /// If given a FQJ, returns the associated presence.
 /// </summary>
 public Presence this[JID jid]
 {
     get
     {
         lock (this)
         {
             UserPresenceManager upm = (UserPresenceManager)m_items[jid.Bare];
             if (upm == null)
             {
                 return(null);
             }
             return(upm[jid.Resource]);
         }
     }
 }
예제 #2
0
        /// <summary>
        /// Get the features associated with the JID.  If a bare JID is passed in, this will be
        /// a union of all of the features for all of the resources of this user.  Otherwise,
        /// it will be the features for the given resource.
        ///
        /// Requires a CapsManager to be set before use.
        /// </summary>
        /// <param name="jid"></param>
        /// <returns>Null if no features are known.</returns>
        public StringSet GetFeatures(JID jid)
        {
            if (m_caps == null)
            {
                return(null);
            }

            lock (this)
            {
                UserPresenceManager upm = (UserPresenceManager)m_items[jid.Bare];
                if (upm == null)
                {
                    return(null);
                }
                return(upm.GetFeatures(m_caps, jid.Resource));
            }
        }
예제 #3
0
        /// <summary>
        /// Get the most available full JID that implements the given feature.  Unlike
        /// most routines in PresenceManager, may also return JIDs that have negative
        /// presence.  If a full JID is specified, this is effectively the same as
        /// HasFeature, but null will be returned if the feature isn't implemented.
        /// 
        /// </summary>
        /// <param name="jid"></param>
        /// <param name="featureURI"></param>
        /// <returns>null if none found</returns>
        public JID GetFeatureJID(JID jid, string featureURI)
        {
            if (jid.Resource != null)
            {
                if (HasFeature(jid, featureURI))
                    return jid;
                return null;
            }

            lock (this)
            {
                UserPresenceManager upm = (UserPresenceManager)m_items[jid.Bare];
                if (upm == null)
                    return null;
                return upm.GetFeatureJID(m_caps, featureURI);
            }
        }
예제 #4
0
        private void GotPresence(object sender, Presence p)
        {
            PresenceType t = p.Type;
            if ((t != PresenceType.available) &&
                (t != PresenceType.unavailable))
                return;

			System.Diagnostics.Debug.Assert(p.From != null);
			if (p.From != null)
			{
				JID f = p.From;
				lock (this)
				{
					UserPresenceManager upm = (UserPresenceManager)m_items[f.Bare];

					if (t == PresenceType.available)
					{
						if (upm == null)
						{
							upm = new UserPresenceManager(f.Bare);
							m_items[f.Bare] = upm;
						}

						upm.AddPresence(p, this);
					}
					else
					{
						if (upm != null)
						{
							upm.RemovePresence(p, this);
							if (upm.Count == 0)
							{
								m_items.Remove(f.Bare);
							}
						}
					}
				}
			}
			
        }
예제 #5
0
        private void GotPresence(object sender, Presence p)
        {
            PresenceType t = p.Type;
            if ((t != PresenceType.available) &&
                (t != PresenceType.unavailable))
                return;

            JID f = p.From;
            lock (this)
            {
                UserPresenceManager upm = (UserPresenceManager)m_items[f.Bare];

                if (t == PresenceType.available)
                {
                    if (upm == null)
                    {
                        upm = new UserPresenceManager(f.Bare);
                        m_items[f.Bare] = upm;
                    }

                    upm.AddPresence(p, this);
                }
                else
                {
                    if (upm != null)
                    {
                        upm.RemovePresence(p, this);
                        if (upm.Count == 0)
                        {
                            m_items.Remove(f.Bare);
                        }
                    }
                }
            }
        }
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(UserPresenceManager obj) {
   return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
 }
예제 #7
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(UserPresenceManager obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }