/// <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]); } } }
/// <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)); } }
/// <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); } }
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); } } } } } }
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; }
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); }