home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C++ / Snippets / CTCPNetwork / CTCPNetwork.h < prev    next >
Encoding:
Text File  |  1995-10-21  |  4.2 KB  |  67 lines  |  [TEXT/CWIE]

  1. // ==============================================================================
  2. //    CTCPNetwork.h                   ©1995 Hiroshi Lockheimer  All rights reserved.
  3. // ==============================================================================
  4. //    Version 1.0
  5.  
  6. #pragma once
  7.  
  8. #include <AddressXlation.h>
  9. #include <MacTCP.h>
  10.  
  11. #define    kBufferSize                (4 * 1024)
  12. #define    kCommandTimeoutValue    60
  13.  
  14. class CNotifier;
  15. class CTCPNotifier;
  16.  
  17. #pragma options align = mac68k
  18.  
  19. typedef short TCPFlags;                    //CTCPNetwork flags
  20.  
  21. enum {
  22.     TCPNilFlag                = 0,        //no flags set
  23.     TCPParseLinesFlag        = 1,        //parse lines at <CR>
  24.     TCPReceiveLineBreakFlag    = 2            //include <CR> in data
  25. };
  26.  
  27. typedef short TCPEventKind;                //event types for TCPEvent mechanism 
  28.  
  29. enum {
  30.     TCPUndefinedEvt            = 1,        //not defined
  31.     TCPClosingEvt            = 2,        //TCPNotifyProc eventCode = TCPClosing
  32.     TCPTerminateEvt            = 3,        //TCPNotifyProc eventCode = TCPTerminate
  33.     TCPDataArrivalEvt        = 4,        //TCPNotifyProc eventCode = TCPDataArrival
  34.     TCPNameToAddressEvt        = 5,        //StrToAddr
  35.     TCPAddressToNameEvt        = 6,        //AddrToName
  36.     TCPOpenNameToAddressEvt    = 7,        //OpenConnection(char *)
  37.     TCPOpenConnectionEvt    = 8,        //OpenConnection(IPAddress)
  38.     TCPListenEvt            = 9,        //Listen
  39.     TCPAbortConnectionEvt    = 10,        //TCPAbort
  40.     TCPCloseConnectionEvt    = 11,        //TCPClose
  41.     TCPSendDataEvt            = 12,        //TCPSend
  42.     TCPReadDataEvt            = 13        //TCPRcv
  43. };
  44.  
  45. typedef struct TCPStream {
  46.     StreamPtr        stream;                    //MacTCP stream
  47.     CTCPNotifier    *notifier;                //notifier object throught entire lifespan of stream
  48.     char            buffer[kBufferSize];    //stream's buffer
  49. } TCPStream;
  50. typedef TCPStream *TCPStreamPtr;
  51.  
  52. typedef struct TCPQEl {                        //TCPEvent mechanism
  53.     struct TCPQEl    *qLink;                    
  54.     short            qType;
  55.     TCPEventKind    tcpQWhat;                //event kind
  56.     long            tcpQMessage;            //depends on event kind
  57.     CNotifier         *tcpQObject;            //corresponding notifier object 
  58. } TCPQEl;
  59. typedef TCPQEl *TCPQElPtr;
  60.  
  61. typedef struct CTCPiopb {                    //passing CTCPNotifier into TCPIOCompletionProc
  62.     TCPiopb            pb;
  63.     CTCPNotifier    *tcpNotifier;
  64. } CTCPiopb;
  65.  
  66. typedef unsigned long     IPAddress;            
  67. typedef unsigned