00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00033
00034
00035 #if defined (G4VIS_BUILD_DAWN_DRIVER) || defined (G4VIS_USE_DAWN)
00036
00037
00038
00039 #if !defined G4FR_CLIENT_SERVER_H
00040 #define G4FR_CLIENT_SERVER_H
00041
00042 #include<sys/types.h>
00043 #include<sys/socket.h>
00044 #include<netinet/in.h>
00045 #include<arpa/inet.h>
00046 #include<netdb.h>
00047 #include<sys/un.h>
00048 #include<unistd.h>
00049 #include<stdio.h>
00050 #include<stdlib.h>
00051 #include<string.h>
00052 #include"G4ios.hh"
00053
00054
00055
00056 const char FR_ENV_SERVER_HOST_NAME[] = "G4DAWN_HOST_NAME" ;
00057 const char FR_ENV_NAMED_PIPE_CONNECTION[] = "G4DAWN_NAMED_PIPE" ;
00058
00059
00060
00061
00062
00063 class G4FRClientServer {
00064 public:
00065 enum { SEND_BUFMAX = 1024 , RECV_BUFMAX = 1024 };
00066 enum { SUN_PATH_MAX = 16 };
00067
00068 protected:
00069 const char TERMINATOR ;
00070 const char END_OF_LINE;
00071 char SUN_PATH[ SUN_PATH_MAX ];
00072 int PORT_NUMBER ;
00073 int fSocketFd ;
00074
00075 char fReceivedMessage [ RECV_BUFMAX ];
00076 char fSendingMessage [ SEND_BUFMAX ];
00077
00078 protected:
00079
00080 void Err( const char* message ) { perror(message) ;}
00081 void SetSendingMessage( const char* message )
00082 { strcpy( fSendingMessage, message );}
00083 void Send() ;
00084
00085 public:
00086
00087 int AcceptUnix(){ return 0;}
00088 int AcceptINET(){ return 0 ;}
00089
00090
00091 int ConnectUnix();
00092 int ConnectINET();
00093
00094
00095
00096
00097 G4FRClientServer ( char terminator = '.' ,
00098 char end_line = '\n' ) ;
00099 virtual ~G4FRClientServer () {;}
00100 void SetSunPath( const char* sun_path )
00101 { strcpy ( SUN_PATH, sun_path ); }
00102 void SetPortNumber( int port_num )
00103 { PORT_NUMBER = port_num ; }
00104 void IncrementPortNumber( int incr = 1 )
00105 { PORT_NUMBER += incr ; }
00106 const char* GetSendingMessage() const
00107 { return fSendingMessage ;}
00108 int GetSendingMessageLength() const
00109 { return strlen(fSendingMessage) ;}
00110 void SetReceivedMessage( const char* message )
00111 { strcpy( fReceivedMessage, message );}
00112 const char* GetReceivedMessage() const
00113 { return fReceivedMessage ;}
00114 int GetReceivedMessageLength() const
00115 { return strlen(fReceivedMessage) ;}
00116 int GetSofd() const { return fSocketFd ; }
00117 int GetPortNumber () const { return PORT_NUMBER ; }
00118 void ClearReceivedMessage ()
00119 { memset(fReceivedMessage, '\0', RECV_BUFMAX) ; }
00120
00121 int IsTerminator(char ch ) { return ( ch == TERMINATOR ); }
00122 char GetTerminator() const { return TERMINATOR ; }
00123 int IsEndOfLine (char ch ) { return ( ch == END_OF_LINE ); }
00124 char GetEndOfLine() const { return END_OF_LINE ; }
00125 void DisConnect();
00126 void Clear();
00127 void WaitSendBack( const char* command_string ) ;
00128
00129
00130 virtual void Send ( const char* message ) ;
00131 virtual void SendLine ( const char* message ) ;
00132
00133
00134 virtual void Receive() ;
00135 virtual void ReceiveLine() ;
00136
00137 };
00138
00139
00140 #endif
00141 #endif //G4VIS_BUILD_DAWN_DRIVER
00142