#ifndef __NETSOCK_H__
#define __NETSOCK_H__

#ifndef __NETUTILS_H__
#include "NetUtils.h" 
#endif

class TConnection;

class TSocketServer : public TLanServer
{                
  BYTE* m_pData;
  DWORD m_dwSize;

protected:  // TLanManager
  virtual BOOL Boot();
  virtual BOOL ShutDown();

  virtual BOOL OnRemoveConnection(DWORD id);

public:   
  BYTE* GetBuffer(DWORD dwSize);
  const BYTE* GetData() const { return m_pData; }

  BOOL OnConnect(const CString& topic);
  void OnConnectConfirm(DWORD id);

public:
  virtual BOOL IsOk() const;

  TSocketServer(const char* name);
  virtual ~TSocketServer();
};

class TSocketClient : public TLanClient
{
  BYTE* m_pData;
  DWORD m_dwSize;

protected:  // TLanManager
  virtual BOOL Boot();
  virtual BOOL ShutDown();
  virtual OnRemoveConnection(DWORD id);

protected:  // TLanClient
    virtual TConnection* OnQueryConnection(const char* service, 
                                   const char* server);

public:
  virtual BOOL Execute(DWORD id, const char* cmd);
  virtual BOOL Request(DWORD id, const char* cmd);
  virtual BYTE* GetBuffer(DWORD& dwSize);
  virtual void ReleaseBuffer();
  virtual BOOL IsOk() const { return TRUE; }

  TSocketClient();
  virtual ~TSocketClient();
};

#endif