public void ListenForClients() { try { m_clients = new List<TcpClient>(); m_communicationThreads = new List<Thread>(); cmdMutex = new Mutex(); while (!stopme) { Console.WriteLine("Waiting for clients..."); Log.Debug("TVServerKodi: Waiting for clients..."); while (!this.tcpListener.Pending()) { Thread.Sleep(30); } // blocks until a client has connected to the server TcpClient client = this.tcpListener.AcceptTcpClient(); // Multithreaded version: Console.WriteLine("New Connection! Starting handler thread for client." + client.Client.RemoteEndPoint.ToString()); Log.Debug("TVServerKodi: New Connection! Starting handler thread for client." + client.Client.RemoteEndPoint.ToString()); //___________________________ lock (this) { m_clients.Add(client); } ConnectionHandler handler = new ConnectionHandler(client, cmdMutex, m_clients.Count); ThreadStart thdstHandler = new ThreadStart(handler.HandleConnection); Thread communicationThread = new Thread(thdstHandler); lock (this) { m_communicationThreads.Add(communicationThread); } communicationThread.Start(); } tcpListener.Stop(); } catch (System.Threading.ThreadAbortException) { //Expected on a shutdown of the TVServer } catch (Exception e) { Log.Error("TVServerKodi: Unexpected error in ListenForClients(): " + e.ToString()); Console.WriteLine(e.ToString()); } }
public GetSignalQuality(ConnectionHandler connection) : base(connection) { }
public ListRecordedTV(ConnectionHandler connection) : base(connection) { }
public UpdateSchedule(ConnectionHandler connection) : base(connection) { }
public GetScheduleInfo(ConnectionHandler connection) : base(connection) { }
public IsRecording(ConnectionHandler connection) : base(connection) { }
public GetChannelThumb(ConnectionHandler connection) : base(connection) { }
public GetCardSettings(ConnectionHandler connection) : base(connection) { }
public GetScheduleCount(ConnectionHandler connection) : base(connection) { }
public ListRecordings(ConnectionHandler connection) : base(connection) { }
public GetRecordingInfo(ConnectionHandler connection) : base(connection) { }
public GetDriveSpace(ConnectionHandler connection) : base(connection) { }
public GetBackendName(ConnectionHandler connection) : base(connection) { }
public SetRecordingTimesWatched(ConnectionHandler connection) : base(connection) { }
public GetRecordingCount(ConnectionHandler connection) : base(connection) { }
public IsTimeshifting(ConnectionHandler connection) : base(connection) { }
public ListSchedules(ConnectionHandler connection) : base(connection) { }
public GetRecordingStopTime(ConnectionHandler connection) : base(connection) { }
public GetTime(ConnectionHandler connection) : base(connection) { }
public GetEPG(ConnectionHandler connection) : base(connection) { }
public UpdateRecording(ConnectionHandler connection) : base(connection) { }
public Test(ConnectionHandler connection) : base(connection) { }
public AddSchedule(ConnectionHandler connection) : base(connection) { }
public ListTVChannels(ConnectionHandler connection) : base(connection) { }
public GetUserName(ConnectionHandler connection) : base(connection) { }
public GetVersion(ConnectionHandler connection) : base(connection) { }
public GetChannelCount(ConnectionHandler connection) : base(connection) { }