Beispiel #1
0
	//--------------------------------------------------------------------------------
	bool CPipeConnector::Connect()
	{
		_WINQ_FCONTEXT( "CPipeConnector::Connect" );

		unsigned long ulError = 0;
		CTime Time;
		unsigned long ulInitialTickCount = Time.GetTickCount();
		do
		{
			m_bConnected = m_Pipe.Open( m_strServerName, m_strPipeName, m_ulAccess, m_ulShareMode, m_pSecurity, m_ulFlags );

			if( !m_bConnected )
			{
				ulError = m_ErrorHelper.GetLastError();
			}

		}while( !m_bConnected && ( ulError == nsWin32::ErrorPipeBusy ) && ( ( Time.GetTickCount() - ulInitialTickCount ) < m_ulConnectionTimeout ) );

		if( !AsyncConnection() )
		{
			m_bConnected ? OnConnected() : OnConnectionError();
		}
		return m_bConnected;
	}