using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace SamaPager_Client
{
    internal class Client
    {
        internal int Port { get; set; }
        internal IPAddress DestinationIP { get; set; }
        internal UdpClient UdpStack { get; set; }
        private IPEndPoint serverEndPoint { get; set; }

        internal Client(IPAddress destinationIP, int destinationPort)
        {
            this.DestinationIP = destinationIP;
            this.Port = destinationPort;
        }

        internal string StartClient()
        {
            serverEndPoint = new IPEndPoint(this.DestinationIP, this.Port);
            try
            {
                UdpStack = new UdpClient();
                return "Serving on " + serverEndPoint;
            }
            catch (Exception ex)
            {
                return $"Error ({ex.Message})";
            }
        }

        internal void SendMessage(string message)
        {
            byte[] msgData = Encoding.UTF8.GetBytes(message);
            UdpStack.Send(msgData, msgData.Length, serverEndPoint);
        }

        internal void KillClient()
        {
            this.UdpStack.Close();
        }
    }
}
