36 #ifdef G4VIS_BUILD_DAWN_DRIVER 
   47 const  char     DEFAULT_SUN_PATH[]              = 
"FR_TMP3"        ;
 
   48 const  int      DEFAULT_PORT_NUMBER             = 40701            ;
 
   50 const  int      MAX_CONNECT_TRIAL               = 10               ;
 
   51 const  char     FR_DEFAULT_HOST_NAME[]          = 
"localhost"      ;      
 
   54 G4FRClientServer::G4FRClientServer ( 
char terminator , 
char end_line ) :  
 
   55         TERMINATOR ( terminator ) , 
 
   56         END_OF_LINE( end_line   ) ,
 
   59         SetSunPath    ( DEFAULT_SUN_PATH ) ; 
 
   60         SetPortNumber ( DEFAULT_PORT_NUMBER ) ;
 
   61         ClearReceivedMessage () ;
 
   66 int G4FRClientServer::ConnectUnix()
 
   69         int                     flag_connected = 0 ; 
 
   70         struct sockaddr_un      server_address ;
 
   73         fSocketFd = socket( AF_UNIX, SOCK_STREAM, 0 );
 
   74         if( fSocketFd < 0 ) { Err(
"G4FRClientServer::ConnectUnix(),socket"); }
 
   77         memset( (
char *)&server_address, 
'\0', 
sizeof(server_address)) ;
 
   78         server_address.sun_family = AF_UNIX ;
 
   79         strcpy( server_address.sun_path, SUN_PATH );
 
   82         int     connection_status = -1  ;
 
   84         while( connection_status < 0 && num_trial <= MAX_CONNECT_TRIAL ) {
 
   86                 connection_status = connect( fSocketFd, (
struct sockaddr * )(&server_address), 
sizeof( server_address ) ) ;
 
   87                 if( connection_status  <0 ) 
 
   89 #if defined DEBUG_CLIENT_SERVER 
   90                         Err(
"G4FRClientServer::ConnectUnix(),connect => RETRY");
 
  103         return flag_connected ;
 
  109 void    G4FRClientServer::Receive()
 
  112         ClearReceivedMessage () ;
 
  113         if( recv( fSocketFd, fReceivedMessage, G4FRClientServer::RECV_BUFMAX , 0 ) < 0 ) 
 
  115                 Err(
"G4FRClientServer::Receive(), recv");
 
  118 #if defined DEBUG_CLIENT_SERVER 
  120           G4cout << 
">>>>> receivedMessage = " << fReceivedMessage << 
G4endl;
 
  127 void    G4FRClientServer::ReceiveLine()
 
  134         memset(fReceivedMessage, 
'\0', RECV_BUFMAX) ;   
 
  135         while( read( fSocketFd, buf, 1 ) == 1 ) {
 
  136                 fReceivedMessage[index++] = buf[0];
 
  137                 if( IsEndOfLine(buf[0]) ) { break ;}
 
  143 void    G4FRClientServer::Send()
 
  145         if( send( fSocketFd, fSendingMessage, strlen(fSendingMessage) , 0 ) < 0 ) 
 
  147                 Err(
"G4FRClientServer::Send(), send");
 
  150 #if defined DEBUG_CLIENT_SERVER 
  152           G4cout << 
"<<<<< SentMessage = " << fSendingMessage << 
G4endl;
 
  159 void    G4FRClientServer::Send( 
const char* message ) 
 
  161         this->SetSendingMessage( message )      ;
 
  168 void    G4FRClientServer::SendLine( 
const char* message ) 
 
  174         this->SetSendingMessage( message )      ;
 
  175         smsg_length = GetSendingMessageLength() ;
 
  178         if( !IsEndOfLine( fSendingMessage[ (smsg_length - 1)] ) ) {
 
  179                 fSendingMessage[ smsg_length ]      = GetEndOfLine() ;
 
  180                 fSendingMessage[ (smsg_length +1) ] = 
'\0' ;
 
  181                 smsg_length = GetSendingMessageLength();
 
  191 void G4FRClientServer::DisConnect()
 
  194         if( shutdown(fSocketFd,2) < 0 ) { 
 
  195                 Err(
"G4FRClientServer::DisConnect,shutdown");
 
  213 int G4FRClientServer::ConnectINET()
 
  216         int                     flag_connected = 0 ;
 
  217         sockaddr_in             server_address ;
 
  218         char                    server_hostname[32] ;
 
  219         hostent*                server_host_p ;
 
  222         fSocketFd = socket( AF_INET, SOCK_STREAM, 0 );
 
  223         if( fSocketFd < 0 ) { 
 
  224 #if defined DEBUG_CLIENT_SERVER 
  225           Err(
"G4FRClientServer::ConnectINET(),socket"); 
 
  230         if( getenv( FR_ENV_SERVER_HOST_NAME ) != NULL ) 
 
  233                 strcpy( server_hostname, getenv( FR_ENV_SERVER_HOST_NAME ) );
 
  237                 server_host_p = gethostbyname( server_hostname ) ;
 
  243                 if( !server_host_p ) {
 
  244 #if defined DEBUG_CLIENT_SERVER 
  245                         Err(
"G4FRClientServer::ConnectINET(), gethostbyname");
 
  247                         server_host_p = gethostbyname( FR_DEFAULT_HOST_NAME ) ;
 
  251                         server_host_p = gethostbyname( FR_DEFAULT_HOST_NAME ) ;
 
  258           G4cout << 
"***** Trying connection to  " << server_hostname << 
G4endl;
 
  263         memset( (
char *)&server_address, 
'\0', 
sizeof(server_address)) ; 
 
  265         server_address.sin_family = AF_INET ;
 
  266         server_address.sin_port   = htons( PORT_NUMBER );
 
  267         memcpy( (
char *)(&server_address.sin_addr ), 
 
  268                 (
char *)( server_host_p->h_addr   ), 
 
  269                 server_host_p->h_length             ); 
 
  271         int     connection_status = -1  ;
 
  273         while( connection_status < 0 && num_trial <= MAX_CONNECT_TRIAL ) {
 
  275                 connection_status = connect( fSocketFd, (
struct sockaddr * )(&server_address), 
sizeof( server_address ) ) ;
 
  276                 if( connection_status  <0 ) 
 
  278 #if defined DEBUG_CLIENT_SERVER 
  279                         Err(
"G4FRClientServer::ConnectINET(),connect => RETRY");
 
  292         return flag_connected ;
 
  298 void    G4FRClientServer::WaitSendBack( 
const char* command_string ) 
 
  304                 if( !strncmp(   this->GetReceivedMessage(), \
 
  306                                 (strlen(command_string))       )   )
 
  316         this->ClearReceivedMessage();   
 
  320 #endif // G4VIS_BUILD_DAWN_DRIVER 
G4GLOB_DLL std::ostream G4cout
 
static Verbosity GetVerbosity()