ROOT logo
// $Id: UdpPacketTcpServer.h 2716 2012-04-05 17:26:33Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Net1_UdpPacketTcpServer_H
#define Net1_UdpPacketTcpServer_H

#include "Glasses/ZGlass.h"
#include "Gled/GSelector.h"
#include "Gled/GQueue.h"

class ZLog;
class UdpPacketSource;
class SUdpPacket;
class GThread;

class SServerSocket;
class SSocket;


class UdpPacketTcpServer : public ZGlass
{
  MAC_RNR_FRIENDS(UdpPacketTcpServer);

private:
  void _init();

protected:
  ZLink<ZLog>             mLog;         // X{GS} L{}
  ZLink<UdpPacketSource>  mSource;      // X{GS} L{}
  GQueue<SUdpPacket>      mUdpQueue;    //!

  //--------------------------------

  Int_t                   mServPort;    // X{GS} 7 Value()
  GSelector               mSelector;    //!
  GThread                *mServThread;  //!
  SServerSocket          *mServSocket;  //!
  list<SSocket*>          mClients;     //!

  static void* tl_Serve(UdpPacketTcpServer* s);
  void Serve();

  void AddClient(SSocket* cs);
  void RemoveClient(SSocket* cs);
  void RemoveClient(list<SSocket*>::iterator sli);

  //--------------------------------

  GThread          *mDeliThread;   //!

  static void* tl_Deliver(UdpPacketTcpServer* s);
  void Deliver();

public:
  UdpPacketTcpServer(const Text_t* n="UdpPacketTcpServer", const Text_t* t=0);
  virtual ~UdpPacketTcpServer();

  void StartAllServices(); // X{Ed} 7 MButt()
  void StopAllServices();  // X{Ed} 7 MButt()

#include "UdpPacketTcpServer.h7"
  ClassDef(UdpPacketTcpServer, 1);
}; // endclass UdpPacketTcpServer

#endif
 UdpPacketTcpServer.h:1
 UdpPacketTcpServer.h:2
 UdpPacketTcpServer.h:3
 UdpPacketTcpServer.h:4
 UdpPacketTcpServer.h:5
 UdpPacketTcpServer.h:6
 UdpPacketTcpServer.h:7
 UdpPacketTcpServer.h:8
 UdpPacketTcpServer.h:9
 UdpPacketTcpServer.h:10
 UdpPacketTcpServer.h:11
 UdpPacketTcpServer.h:12
 UdpPacketTcpServer.h:13
 UdpPacketTcpServer.h:14
 UdpPacketTcpServer.h:15
 UdpPacketTcpServer.h:16
 UdpPacketTcpServer.h:17
 UdpPacketTcpServer.h:18
 UdpPacketTcpServer.h:19
 UdpPacketTcpServer.h:20
 UdpPacketTcpServer.h:21
 UdpPacketTcpServer.h:22
 UdpPacketTcpServer.h:23
 UdpPacketTcpServer.h:24
 UdpPacketTcpServer.h:25
 UdpPacketTcpServer.h:26
 UdpPacketTcpServer.h:27
 UdpPacketTcpServer.h:28
 UdpPacketTcpServer.h:29
 UdpPacketTcpServer.h:30
 UdpPacketTcpServer.h:31
 UdpPacketTcpServer.h:32
 UdpPacketTcpServer.h:33
 UdpPacketTcpServer.h:34
 UdpPacketTcpServer.h:35
 UdpPacketTcpServer.h:36
 UdpPacketTcpServer.h:37
 UdpPacketTcpServer.h:38
 UdpPacketTcpServer.h:39
 UdpPacketTcpServer.h:40
 UdpPacketTcpServer.h:41
 UdpPacketTcpServer.h:42
 UdpPacketTcpServer.h:43
 UdpPacketTcpServer.h:44
 UdpPacketTcpServer.h:45
 UdpPacketTcpServer.h:46
 UdpPacketTcpServer.h:47
 UdpPacketTcpServer.h:48
 UdpPacketTcpServer.h:49
 UdpPacketTcpServer.h:50
 UdpPacketTcpServer.h:51
 UdpPacketTcpServer.h:52
 UdpPacketTcpServer.h:53
 UdpPacketTcpServer.h:54
 UdpPacketTcpServer.h:55
 UdpPacketTcpServer.h:56
 UdpPacketTcpServer.h:57
 UdpPacketTcpServer.h:58
 UdpPacketTcpServer.h:59
 UdpPacketTcpServer.h:60
 UdpPacketTcpServer.h:61
 UdpPacketTcpServer.h:62
 UdpPacketTcpServer.h:63
 UdpPacketTcpServer.h:64
 UdpPacketTcpServer.h:65
 UdpPacketTcpServer.h:66
 UdpPacketTcpServer.h:67
 UdpPacketTcpServer.h:68