public void RequestFeatures(CapsSource source, CapsInfo info) { if (_pendingRequests.Contains(info)) { return; } _pendingRequests.Add(info); var connection = GetConnection(source.Client); var requestId = Guid.NewGuid().ToString("N"); _requestIdToCapsInfo.Add(requestId, info); var iq = new DiscoInfoIq(IqType.get); iq.Id = requestId; iq.From = connection.MyJID; iq.To = new Jid(source.EntityJid); if (info.Hash != null && info.Node != null && info.Version != null) { iq.Query.Node = string.Format("{0}#{1}", info.Node, info.Version); } connection.Send(iq); }
private void ProcessedPresence(CapsSource capsKey, Presence presence) { var capabilities = presence.Capabilities; if (capabilities == null) { _presentCaps.Remove(capsKey); return; } var version = capabilities.Version; var hash = capabilities.Hash; var node = capabilities.Node; var info = new CapsInfo { Version = version, Hash = hash, Node = node, }; if (_presentCaps.ContainsKey(capsKey)) { var prevCaps = _presentCaps[capsKey]; if (prevCaps == info) { return; } } _presentCaps[capsKey] = info; if (!_discoveryDataAccess.HasCaps(info)) { _discoveryNetAccess.RequestFeatures(capsKey, info); } }
private void OnFeatures(CapsInfo version, IList<string> features) { _discoveryDataAccess.RecordFeatures(version, features); }
protected virtual void OnFeaturesReceived(CapsInfo arg1, IList<string> arg2) { var handler = FeaturesReceived; if (handler != null) handler(arg1, arg2); }
protected bool Equals(CapsInfo other) { return string.Equals(Version, other.Version) && string.Equals(Node, other.Node) && string.Equals(Hash, other.Hash); }
public void RecordFeatures(CapsInfo info, IList<string> features) { _dicoveryDA.RecordFeatures(info.Node, info.Hash, info.Version, features); }
public bool HasFeature(CapsInfo capsInfo, string uri) { return _dicoveryDA.HasFeature(capsInfo.Node, capsInfo.Hash, capsInfo.Version, uri); }
public bool HasCaps(CapsInfo info) { return _dicoveryDA.HasCaps(info.Node, info.Hash, info.Version); }