Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 // IIrcServer
 public void RemoveClient(IrcClient client)
 {
     InternalRemoveClient(client);
 }
Ejemplo n.º 3
0
 public Message(MessageType type, IrcClient client, string contents)
 {
     Type     = type;
     Client   = client;
     Contents = contents;
 }