protected virtual void HandleClientConnected(IrcRegistrationInfo regInfo)
{
if (regInfo.Password != null)
// Authenticate with server using password.
SendMessagePassword(regInfo.Password);
// Check if client is registering as service or normal user.
if (regInfo is IrcServiceRegistrationInfo)
{
// Register client as service.
var serviceRegInfo = (IrcServiceRegistrationInfo) regInfo;
SendMessageService(serviceRegInfo.NickName, serviceRegInfo.Distribution,
serviceRegInfo.Description);
localUser = new IrcLocalUser(serviceRegInfo.NickName, serviceRegInfo.Distribution,
serviceRegInfo.Description);
}
else
{
// Register client as normal user.
var userRegInfo = (IrcUserRegistrationInfo) regInfo;
SendMessageNick(userRegInfo.NickName);
SendMessageUser(userRegInfo.UserName, GetNumericUserMode(userRegInfo.UserModes),
userRegInfo.RealName);
localUser = new IrcLocalUser(userRegInfo.NickName, userRegInfo.UserName, userRegInfo.RealName,
userRegInfo.UserModes);
}
localUser.Client = this;
// Add local user to list of known users.
lock (((ICollection) Users).SyncRoot)
users.Add(localUser);
OnConnected(new EventArgs());
}