home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 31 / CDASC_31_1996_juillet_aout.iso / vrac / cuj0796.zip / HEYMAN.ZIP / NMPIPE.H < prev    next >
C/C++ Source or Header  |  1996-05-08  |  1KB  |  59 lines

  1. #ifndef nmpipe_h
  2. #define nmpipe_h
  3.  
  4. #include <windows.h>
  5.  
  6. const DWORD nmpipeDefaultTimeOut = 2000;
  7. const DWORD nmpipeDefaultRetries = 100;
  8.  
  9. enum nmpipe_eRetcode {
  10.     nmpipeOK = 0,
  11.     nmpipeError,
  12.     nmpipeTimeOut,
  13.     nmpipeDisconnect,
  14.     nmpipeEvent
  15. };
  16.  
  17. // base class for named pipes
  18. class nmpipe_cNamedPipe {
  19. protected:
  20.     BOOL       bInError;
  21.     HANDLE     hPipe;
  22.     OVERLAPPED Overlap;
  23.  
  24.     nmpipe_eRetcode BlockForIO(HANDLE, DWORD, DWORD);
  25.     nmpipe_eRetcode GetAvailableData(DWORD);
  26.  
  27.     nmpipe_cNamedPipe();
  28.  
  29. public:
  30.     virtual ~nmpipe_cNamedPipe();
  31.  
  32.     nmpipe_eRetcode Read(void *, DWORD, DWORD = nmpipeDefaultTimeOut);
  33.     nmpipe_eRetcode Write(const void *, DWORD, DWORD = nmpipeDefaultTimeOut);
  34.  
  35.     BOOL InError() { return bInError; };
  36. };
  37.  
  38. // client-side named pipe class
  39. class nmpipe_cConnector : public nmpipe_cNamedPipe {
  40. public:
  41.     nmpipe_cConnector(const char *, int = nmpipeDefaultRetries);
  42.     virtual ~nmpipe_cConnector();
  43. };
  44.  
  45. // server-side named pipe class
  46. class nmpipe_cListener : public nmpipe_cNamedPipe {
  47. protected:
  48.     HANDLE hEventShutdown;
  49.  
  50. public:
  51.     nmpipe_cListener(const char *, HANDLE, DWORD = nmpipeDefaultTimeOut);
  52.     virtual ~nmpipe_cListener();
  53.  
  54.     nmpipe_eRetcode Connect(DWORD = nmpipeDefaultTimeOut);
  55.     nmpipe_eRetcode Disconnect();
  56. };
  57.  
  58. #endif
  59.