Files
Proftaak-RH-B4/Server/Communication.cs
fabjuuuh 173dbf2745 update
2020-10-16 15:02:26 +02:00

85 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using System.IO.Pipes;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using Util;
namespace Server
{
class Communication
{
private TcpListener listener;
private List<Client> clients;
public Client doctor;
public Communication(TcpListener listener)
{
this.listener = listener;
this.clients = new List<Client>();
}
public void Start()
{
listener.Start();
Console.WriteLine($"==========================================================================\n" +
$"\tstarted accepting clients at {DateTime.Now}\n" +
$"==========================================================================");
listener.BeginAcceptTcpClient(new AsyncCallback(OnConnect), null);
}
private void OnConnect(IAsyncResult ar)
{
var tcpClient = listener.EndAcceptTcpClient(ar);
Console.WriteLine($"Client connected from {tcpClient.Client.RemoteEndPoint}");
clients.Add(new Client(this, tcpClient));
listener.BeginAcceptTcpClient(new AsyncCallback(OnConnect), null);
}
internal void Disconnect(Client client)
{
clients.Remove(client);
doctor.sendMessage(DataParser.getDisconnectJson(client.username));
}
public void NewLogin(Client client)
{
if (doctor == null)
{
doctor = client;
}
else
{
doctor.sendMessage(DataParser.getNewConnectionJson(client.username));
}
}
public void StartSessionUser(string user)
{
foreach(Client client in clients)
{
if(client.username == user)
{
client.sendMessage(DataParser.getStartSessionJson(user));
client.StartSession();
}
}
}
public void StopSessionUser(string user)
{
foreach (Client client in clients)
{
if (client.username == user)
{
client.sendMessage(DataParser.getStopSessionJson(user));
client.StopSession();
}
}
}
}
}