Exemplo n.º 1
0
nsresult
AsyncNoShutdownTest(int testNumber)
{
    // This test gets a service, and also gets an async request for shutdown,
    // but the service doesn't get shut down because some other client (who's
    // not participating in the async shutdown game as he should) is 
    // continuing to hang onto the service. This causes myServ variable to 
    // get set to NULL, but the service doesn't get unloaded right away as
    // it should.

    nsresult err;

    err = BeginTest(testNumber);
    if (err != NS_OK) return err;

    // Create some other user of kIMyServiceCID, preventing it from
    // really going away:
    IMyService* otherClient;
    err = CallGetService(kIMyServiceCID, &otherClient);
    if (err != NS_OK) return err;

    err = AsyncShutdown(testNumber);
    if (err != NS_OK) return err;
    err = EndTest(testNumber);

    // Finally, release the other client.
    NS_RELEASE(otherClient);

    return err;
}
Exemplo n.º 2
0
// bShutdown = if true, then try proper shutdown by having
//   OnSipInitStateMachine do shutdown, unsubscribe, etc.
void OnSipTapi::Disconnect(bool bShutdown)
{
	Logger::log_debug(_T("OnSipTapi::Disconnect bShutdown=%d"),bShutdown);
	if ( bShutdown )
	{
		AsyncShutdown();
		TimeOut tmout(5000);
		while ( Poll() && !tmout.IsExpired() )
		{
			Sleep(50);
			if ( IsShutdownComplete() )
			{
				Logger::log_debug(_T("OnSipTapi::Disconnect shutdown complete") );
				break;
			}
		}
	}
	Cleanup();
}
Exemplo n.º 3
0
int
main(void)
{
    nsresult err, rv = 0;
    int testNumber = 0;

    err = NS_InitXPCOM2(nsnull, nsnull, nsnull);
    if (NS_FAILED(err)) {
        printf("NS_InitXPCOM2 failed\n");
        return -1;
    }

    err = SimpleTest(++testNumber);
    if (err != NS_OK) {
        printf("test %d failed\n", testNumber);
        rv = -1;
    }

    if (rv == 0) {
        err = AsyncNoShutdownTest(++testNumber);
        if (err != NS_OK) {
            printf("test %d failed\n", testNumber);
            rv = -1;
        }
    }

    if (rv == 0) {
        err = AsyncShutdown(++testNumber);
        if (err != NS_OK) {
            printf("test %d failed\n", testNumber);
            rv = -1;
        }
    }

    if (rv == 0)
        printf("there was great success\n");

    err = NS_ShutdownXPCOM(nsnull);
    NS_ASSERTION(NS_SUCCEEDED(err), "NS_ShutdownXPCOM failed");

    return rv;
}