namespace DarkWynter.Engine.Networking
{

    //Server Code
    using System;
    using System.Net.Sockets;
    using System.IO;
    public static class Server
    {
        //entry point of main method....
        public static void Run()
        {
            //TcpListener is listening on the given port... {
            TcpListener tcpListener = new TcpListener(1234);
            tcpListener.Start();
            Console.WriteLine("Server Started");

            //Accepts a new connection...
            Socket socketForClient = tcpListener.AcceptSocket();
            
            try
            {
                if (socketForClient.Connected)
                {
                    while (true)
                    {
                        Console.WriteLine("Client connected");
                        NetworkStream networkStream = new NetworkStream(socketForClient);
                        StreamWriter streamWriter = new StreamWriter(networkStream);
                        StreamReader streamReader = new StreamReader(networkStream);

                        string line = streamReader.ReadLine();
                        Console.WriteLine("Read:" + line);

                        line = ServerLogic(line);
                        
                        streamWriter.WriteLine(line);
                        Console.WriteLine("Wrote:" + line);
                        streamWriter.Flush();
                    }
                }
                socketForClient.Close();
                Console.WriteLine("Exiting...");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }

        public static string ServerLogic(string line)
        {
            line = line.ToUpper() + "!";
            return line;
        }
    }
}