Smuxi.Engine.XmppProtocolManager.OnDiscoInfo C# (CSharp) Method

OnDiscoInfo() private method

private OnDiscoInfo ( agsXMPP.protocol.client.IQEventArgs e, string hash ) : void
e agsXMPP.protocol.client.IQEventArgs
hash string
return void
        void OnDiscoInfo(IQEventArgs e, string hash)
        {
            if (e.IQ.Error != null) {
            #if LOG4NET
                _Logger.DebugFormat("An error happened during service discovery: {0}", e.IQ);
            #endif
                // clear item from cache so the request is done again some time
                DiscoCache.Remove(hash);
                e.Handled = true;
                return;
            }
            if (e.IQ.Type != IqType.result) {
            #if LOG4NET
                _Logger.Debug("OnDiscoInfo(): iq is not a result");
            #endif
                return;
            }
            if (!(e.IQ.Query is DiscoInfo)) {
            #if LOG4NET
                _Logger.Debug("OnDiscoInfo(): query is not a DiscoInfo");
            #endif
                return;
            }
            var info = (DiscoInfo)e.IQ.Query;
            DiscoCache[hash] = info;
            e.Handled = true;
            if (String.IsNullOrEmpty(e.IQ.From.User)) {
                // server capabilities
                var builder = CreateMessageBuilder();
                builder.AppendText("The Server supports the following features: ");
                Session.AddMessageToChat(NetworkChat, builder.ToMessage());
                foreach (var feature in info.GetFeatures()) {
                    builder = CreateMessageBuilder();
                    builder.AppendText(feature.Var);
                    Session.AddMessageToChat(NetworkChat, builder.ToMessage());
                }
            } else {
                AddCapabilityToResource(e.IQ.From, info);
            }
        }