internal void ConnectionInfoNotify(IrcPacket packet)
{
var args = packet.Content.Remainder;
var index = args.IndexOf(':');
if (index > -1)
{
args = args.Substring(0, index);
}
var words = args.Split(' ');
m_server = packet.Prefix;
var pairs = new Dictionary<string, string>(words.Length, StringComparer.InvariantCultureIgnoreCase);
for (var i = 1; i < words.Length; i++)
{
string key, value;
if (words[i].IndexOf('=') < 0)
{
key = words[i];
value = "";
}
else
{
var pair = words[i].Split('=');
key = pair[0];
value = pair[1];
}
pairs[key] = value;
switch (key.ToUpper())
{
case "CHANTYPES":
m_CTypes = value;
break;
case "MAXNICKLEN":
if (!int.TryParse(value, out m_MaxNickLen))
{
m_MaxNickLen = 30;
}
break;
case "PREFIX":
var pair = value.Substring(1).Split(')');
m_CPrefixes = pair[0];
m_CSymbols = pair[1];
break;
case "CHANMODES":
m_CModes = value;
break;
case "NETWORK":
Network.Name = value;
break;
}
}
if (Network.Name != null)
{
OnConnectionInfo(packet, pairs);
}
}