/// <summary> /// Creates and sets up an IrcClient instance and connects to a server according to "server" /// </summary> public void Connect(ServerDescriptor server) { if (server == null) throw new ArgumentNullException("server"); IrcClient irc = new IrcClient(); // Settings irc.AutoReconnect = true; irc.Encoding = System.Text.Encoding.UTF8; irc.SendDelay = config.GetInt("send-delay", 200); irc.ActiveChannelSyncing = config.GetBoolean("use-active-channel-syncing", false); irc.UseSsl = server.UseSsl; // Bind event handlers irc.OnChannelMessage += OnChannelMessage; irc.OnQueryMessage += OnQueryMessage; irc.OnQueryNotice += OnQueryNotice; irc.OnDisconnected += OnDisconnected; // Create scrollback buffer scrollback[server.Host] = new C5.CircularQueue<string>(1000); try { log.Info("Connecting to server " + server.Host); irc.Connect(server.Host, server.Port); } catch (ConnectionException e) { log.Error("Could not connect to server " + irc.Address, e); Exit(); } try { irc.Login(server.Nick, config.GetString("realname", "slave"), 0, config.GetString("username", "slave") ); foreach (string channel in server.Channels) irc.RfcJoin(channel); ircs[irc.Address] = irc; } catch (ConnectionException e) { log.Error("Connection error", e); Exit(); } catch (Exception e) { Exit(); } }
public void Connect(ServerDescriptor[] servers) { foreach (var server in servers) Connect(server); }