Exemplo n.º 1
0
        /**
         * Run
         */
        public bool Run(NetworkStream stream, WriteManager writeManager, string input)
        {
            try
            {
                if (!input.StartsWith("/"))
                {
                    return(writeManager.Run(stream, Wrapper.Type.Message, input));
                }

                input = input.ToLower();
                foreach (DictionaryEntry entry in Table)
                {
                    if (!((string[])entry.Key).Any(alias => Regex.Split(input, @"\s+")[0].Equals(alias)))
                    {
                        continue;
                    }

                    if (writeManager.Run(stream, (Wrapper.Type)entry.Value, input))
                    {
                        return(true);
                    }

                    Console.Out.WriteLineAsync("Invalid Arguments");
                    return(false);
                }
                Console.Out.WriteLineAsync("Invalid Command");
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemplo n.º 2
0
        /**
         * Broadcast to all connected clients
         */
        public void Broadcast(string msg, bool flag = false, Client client = null)
        {
            if (flag && client == null)
            {
                return; // Add some security for NullReferenceException
            }
            foreach (var item in ClientList)
            {
                var broadcastClient = item.Value;
                if (broadcastClient == client)
                {
                    continue; // Stop if it is the same socket
                }
                if (broadcastClient.Lobby != null)
                {
                    continue; // Stop if the client is in a Lobby
                }
                NetworkStream broadcastStream;
                try
                {
                    broadcastStream = broadcastClient.Socket.GetStream();
                }
                catch (InvalidOperationException)
                {
                    // Remove client if we can't get its stream
                    PendingDisconnection.Add(broadcastClient);
                    continue;
                }

                WriteManager.Run(broadcastStream, Wrapper.Type.Message,
                                 flag
                        ? client.Info.Name + " says : " + msg
                        : msg);
            }

            // Check disconnection after all broadcast
            CheckDisconnection();
        }