Пример #1
0
int SpiceController::Connect(const int nRetries)
{
    int rc = -1;
    int sleep_time = 0;

    // try to connect for specified count
    for (int i = 0; rc != 0 && i < nRetries; ++i)
    {
        rc = Connect();
        g_usleep(sleep_time * G_USEC_PER_SEC);
        ++sleep_time;
    }
    if (rc != 0) {
        g_warning("error connecting");
        g_assert(m_pipe == NULL);
    }
    if (!CheckPipe()) {
        g_warning("Pipe validation failure");
        g_warn_if_fail(m_pipe == NULL);
    }
    if (m_pipe == NULL) {
        g_warning("failed to create pipe");
#ifdef XP_WIN
        rc = MAKE_HRESULT(1, FACILITY_CREATE_RED_PIPE, GetLastError());
#endif
        this->StopClient();
    }

    return rc;
}
Пример #2
0
int main(int argc, char **argv)
{
  int server_sock, session_sock;
  
  if (argc > 1) TestInit(0);

  server_sock = OpenUDPSocket( 1701 );
  session_sock = OpenPPPoL2TPSocket();

  /* Try sending packets first to see if that helps */
  // SendRawPacket( server_sock, 1701, control_packet, sizeof( control_packet ) );
  // SendRawPacket( server_sock, 1701, data_packet,    sizeof( data_packet    ) );

  fcntl( server_sock, F_SETFL, O_NONBLOCK );
  fcntl( session_sock, F_SETFL, O_NONBLOCK );
  
  CheckPipe( server_sock );
  
  ConnectSock( session_sock, server_sock, 1701, 1, 2, 3, 4 );

  system( "./subtest-proc" );
  
  SendRawPacket( server_sock, 1701, control_packet, sizeof( control_packet ) );
  SendRawPacket( server_sock, 1701, data_packet,    sizeof( data_packet    ) );

  system( "./subtest-proc" );

  CheckPipe( server_sock );
  CheckPipe( session_sock );

  system( "./subtest-proc" );
  
  /* Close session socket first, because other way round breaks right now */  
  TestPrintf( "Closing session socket\n" );  
  close( session_sock );
  TestPrintf( "Closing server socket\n" );  
  close( server_sock );
  
  return 0;
}
Пример #3
0
int main(int argc, char **argv)
{
  int server_sock1, session_sock1;
  int server_sock2, session_sock2;
  
  if (argc > 1) TestInit(0);

  server_sock1 = OpenUDPSocket( 1701 );
  session_sock1 = OpenPPPoL2TPSocket();

  server_sock2 = OpenUDPSocket( 1702 );
  session_sock2 = OpenPPPoL2TPSocket();

#if 0
  /* Try sending packets first to see if that helps */
  SendTestPacket( server_sock1, 1702 );
  SendTestPacket( server_sock2, 1701 );
#endif

  fcntl( server_sock1,  F_SETFL, O_NONBLOCK );
  fcntl( session_sock1, F_SETFL, O_NONBLOCK );
  fcntl( server_sock2,  F_SETFL, O_NONBLOCK );
  fcntl( session_sock2, F_SETFL, O_NONBLOCK );

  fcntl( server_sock1,  F_SETFD, FD_CLOEXEC );
  fcntl( session_sock1, F_SETFD, FD_CLOEXEC );
  fcntl( server_sock2,  F_SETFD, FD_CLOEXEC );
  fcntl( session_sock2, F_SETFD, FD_CLOEXEC );

  CheckPipe( server_sock1 );
  CheckPipe( server_sock2 );
    
  ConnectSock( session_sock1, server_sock1, 1702, 1, 2, 3, 4 );
  ConnectSock( session_sock2, server_sock2, 1701, 3, 4, 1, 2 );

  system( "./subtest-proc" );
  
  SendTestPacket( session_sock1, 1702 );
  SendTestPacket( session_sock2, 1701 );

  system( "./subtest-proc" );

  CheckPipe( server_sock1 );
  CheckPipe( session_sock1 );
  CheckPipe( server_sock2 );
  CheckPipe( session_sock2 );
  
  if (argc == 0)
  {
    StartLoopingFunction( session_sock1, 0, 0 );
    StartLoopingFunction( session_sock2, 0, 0 );
    StartLoopingFunction( server_sock1, 1702, 0 );
    StartLoopingFunction( server_sock2, 1701, 0 );
  }
  else
  {
    StartLoopingFunction( session_sock1, 0, 1000 );
    StartLoopingFunction( session_sock2, 0, 2000 );
    StartLoopingFunction( server_sock1, 1702, 3000 );
    StartLoopingFunction( server_sock2, 1701, 4000 );
  }

  if (argc == 0) 
  {
    char buf[16];
    fprintf( stdout, "Press any key to continue\n" );
    fgets( buf, 10, stdin );
  } 
  else 
  {
    fprintf(stdout, "Waiting 60 seconds...\n");
    sleep(60);
  }

  system( "./subtest-proc" );

  TestPrintf( "Closing server2 socket\n" );  
  close( server_sock2 );
  TestPrintf( "Closing session2 socket\n" );  
  close( session_sock2 );
  TestPrintf( "Closing session1 socket\n" );  
  close( session_sock1 );
  TestPrintf( "Closing server1 socket\n" );  
  close( server_sock1 );
  
  return 0;
}