private void HandleJoin(string[] arguments, IrcClient client) { Console.WriteLine("Received JOIN request from {0}", client.IsRegistered() ? client.GetNickname() : client.ToString()); if (!client.IsRegistered()) { string msg = String.Format("411 JOIN CR LF"); //ERR_NOTREGISTERED client.SendMessage(msg); Console.WriteLine(" Returned 411 (ERR_NOTREGISTERED)"); return; } if (arguments.Count() < 1) { string msg = "412 JOIN CR LF"; //ERR_NEEDMOREPARAMS client.SendMessage(msg); Console.WriteLine(" Returned 412 (ERR_NEEDMOREPARAMS)"); return; } var roomname = arguments[0]; Room room = m_ircServer.GetRoom(roomname); if (room == null) { string msg = String.Format("402 JOIN {0} CR LF", roomname); //ERR_NOSUCHROOM client.SendMessage(msg); Console.WriteLine(" Returned 402 (ERR_NOSUCHROOM): {0}", roomname); return; } if (room.Members.Contains(client)) { string msg = String.Format("404 {0} CR LF", roomname); //ERR_ALREADYJOINED client.SendMessage(msg); Console.WriteLine(" Returned 404 (ERR_ALREADYJOINED): {0}", roomname); return; } if (room.Members.Count >= MAX_NUM_ROOM_MEMBERS) { string msg = String.Format("414 {0} CR LF", roomname); //ERR_ROOMISFULL client.SendMessage(msg); Console.WriteLine(" Returned 414 (ERR_ROOMISFULL): {0}", roomname); return; } string notification = String.Format("308 {0} {1} CR LF", roomname, client.GetNickname()); //RPL_JOINSUCCEEDED room.SendMessage(notification); Console.WriteLine(" Returned 308 (RPL_JOINSUCCEEDED): {0}", roomname); room.Members.Add(client); string response = String.Format("308 {0} CR LF", roomname); //RPL_JOINSUCCEEDED client.SendMessage(response); Console.WriteLine(" Notified room {0} of join", roomname); }
private void HandleCreate(string[] arguments, IrcClient client) { Console.WriteLine("Received CREATE request from {0}", client.IsRegistered() ? client.GetNickname() : client.ToString()); if (!client.IsRegistered()) { string msg = String.Format("411 CREATE CR LF"); //ERR_NOTREGISTERED client.SendMessage(msg); Console.WriteLine(" Returned 411 (ERR_NOTREGISTERED)"); return; } if (arguments.Count() < 1) { string msg = "412 CREATE CR LF"; //ERR_NEEDMOREPARAMS client.SendMessage(msg); Console.WriteLine(" Returned 412 (ERR_NEEDMOREPARAMS)"); return; } var roomname = arguments[0]; if (roomname.Length > MAX_ROOM_LENGTH || roomname.Contains(" ")) { string msg = String.Format("407 {0} CR LF", roomname); //ERR_ERRONEOUSROOMNAME client.SendMessage(msg); Console.WriteLine(" Returned 407 (ERR_ERRONEOUSROOMNAME): {0}", roomname); return; } if (m_ircServer.IsRoomNameInUse(roomname)) { string msg = String.Format("406 {0} CR LF", roomname); //ERR_ROOMNAMEINUSE client.SendMessage(msg); Console.WriteLine(" Returned 406 (ERR_ROOMNAMEINUSE): {0}", roomname); return; } if (m_ircServer.GetNumRooms() >= MAX_ROOM_NUM) { string msg = String.Format("405 {0} CR LF", roomname); //ERR_TOOMANYROOMS client.SendMessage(msg); Console.WriteLine(" Returned 405 (ERR_TOOMANYROOMS): {0}", roomname); return; } m_ircServer.AddRoom(roomname); string response = String.Format("307 {0} CR LF", roomname); //RPL_CREATESUCCEEDED client.SendMessage(response); Console.WriteLine(" Returned 307 (RPL_CREATESUCCEEDED): {0}", roomname); Room room = m_ircServer.GetRoom(roomname); room.Members.Add(client); Console.WriteLine("{0} joined room {1}", client.GetNickname(), room.GetName()); response = String.Format("308 {0} CR LF", roomname); //RPL_JOINSUCCEEDED client.SendMessage(response); Console.WriteLine(" Returned 307 (RPL_JOINSUCCEEDED): {0}", roomname); }