⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accept.c

📁 Netscape NSPR库源码
💻 C
📖 第 1 页 / 共 2 页
字号:
                timeoutTime);            switch(clientAction) {            case CLIENT_TIMEOUT_ACCEPT:                TEST_ASSERT(clientSock == 0);                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            case CLIENT_NORMAL:                TEST_ASSERT(clientSock);                bytesRead = PR_Recv(clientSock,                    buf,  CLIENT_DATA,  0,  timeoutTime);                TEST_ASSERT(bytesRead == CLIENT_DATA);                break;            case CLIENT_TIMEOUT_SEND:                TEST_ASSERT(clientSock);                bytesRead = PR_Recv(clientSock,                    buf,  CLIENT_DATA,  0,  timeoutTime);                TEST_ASSERT(bytesRead == -1);                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            }            break;        case ACCEPT_READ:            status = PR_AcceptRead(listenSock, &clientSock,                &raddr, buf, CLIENT_DATA, timeoutTime);            switch(clientAction) {            case CLIENT_TIMEOUT_ACCEPT:                /* Invalid test case */                TEST_ASSERT(0);                break;            case CLIENT_NORMAL:                TEST_ASSERT(clientSock);                TEST_ASSERT(status == CLIENT_DATA);                break;            case CLIENT_TIMEOUT_SEND:                TEST_ASSERT(status == -1);                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            }            break;#ifdef WINNT        case ACCEPT_FAST:            clientSock = PR_NTFast_Accept(listenSock,                &clientAddr, timeoutTime);            switch(clientAction) {            case CLIENT_TIMEOUT_ACCEPT:                TEST_ASSERT(clientSock == 0);                if (debug_mode)                    PR_fprintf(output, "PR_GetError is %ld\n", PR_GetError());                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            case CLIENT_NORMAL:                TEST_ASSERT(clientSock);                bytesRead = PR_Recv(clientSock,                    buf,  CLIENT_DATA,  0,  timeoutTime);                TEST_ASSERT(bytesRead == CLIENT_DATA);                break;            case CLIENT_TIMEOUT_SEND:                TEST_ASSERT(clientSock);                bytesRead = PR_Recv(clientSock,                    buf,  CLIENT_DATA,  0,  timeoutTime);                TEST_ASSERT(bytesRead == -1);                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            }            break;            break;        case ACCEPT_READ_FAST:            status = PR_NTFast_AcceptRead(listenSock,                &clientSock, &raddr, buf, 4096, timeoutTime);            switch(clientAction) {            case CLIENT_TIMEOUT_ACCEPT:                /* Invalid test case */                TEST_ASSERT(0);                break;            case CLIENT_NORMAL:                TEST_ASSERT(clientSock);                TEST_ASSERT(status == CLIENT_DATA);                break;            case CLIENT_TIMEOUT_SEND:                TEST_ASSERT(clientSock == NULL);                TEST_ASSERT(status == -1);                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            }            break;        case ACCEPT_READ_FAST_CB:            status = PR_NTFast_AcceptRead_WithTimeoutCallback(                listenSock, &clientSock, &raddr, buf, 4096,                timeoutTime, timeout_callback, (void *)CALLBACK_MAGIC);            switch(clientAction) {            case CLIENT_TIMEOUT_ACCEPT:                /* Invalid test case */                TEST_ASSERT(0);                break;            case CLIENT_NORMAL:                TEST_ASSERT(clientSock);                TEST_ASSERT(status == CLIENT_DATA);                break;            case CLIENT_TIMEOUT_SEND:                if (debug_mode)                    PR_fprintf(output, "clientSock = 0x%8.8lx\n", clientSock);                TEST_ASSERT(clientSock == NULL);                TEST_ASSERT(status == -1);                TEST_ASSERT(PR_GetError() == PR_IO_TIMEOUT_ERROR);                break;            }            break;#endif        }        if (clientSock != NULL) {            PR_Close(clientSock);            clientSock = NULL;        }    }    PR_Close(listenSock);    PR_JoinThread(clientThread);}void AcceptUpdatedTest(void){     RunTest(ACCEPT_NORMAL, CLIENT_NORMAL); }void AcceptNotUpdatedTest(void){     RunTest(ACCEPT_FAST, CLIENT_NORMAL); }void AcceptReadTest(void){     RunTest(ACCEPT_READ, CLIENT_NORMAL); }void AcceptReadNotUpdatedTest(void){     RunTest(ACCEPT_READ_FAST, CLIENT_NORMAL); }void AcceptReadCallbackTest(void){     RunTest(ACCEPT_READ_FAST_CB, CLIENT_NORMAL); }void TimeoutAcceptUpdatedTest(void){     RunTest(ACCEPT_NORMAL, CLIENT_TIMEOUT_ACCEPT); }void TimeoutAcceptNotUpdatedTest(void){     RunTest(ACCEPT_FAST, CLIENT_TIMEOUT_ACCEPT); }void TimeoutAcceptReadCallbackTest(void){     RunTest(ACCEPT_READ_FAST_CB, CLIENT_TIMEOUT_ACCEPT); }void TimeoutReadUpdatedTest(void){     RunTest(ACCEPT_NORMAL, CLIENT_TIMEOUT_SEND); }void TimeoutReadNotUpdatedTest(void){     RunTest(ACCEPT_FAST, CLIENT_TIMEOUT_SEND); }void TimeoutReadReadTest(void){     RunTest(ACCEPT_READ, CLIENT_TIMEOUT_SEND); }void TimeoutReadReadNotUpdatedTest(void){     RunTest(ACCEPT_READ_FAST, CLIENT_TIMEOUT_SEND); }void TimeoutReadReadCallbackTest(void){     RunTest(ACCEPT_READ_FAST_CB, CLIENT_TIMEOUT_SEND); }/************************************************************************/static void Measure(void (*func)(void), const char *msg){    PRIntervalTime start, stop;    double d;    start = PR_IntervalNow();    (*func)();    stop = PR_IntervalNow();    d = (double)PR_IntervalToMicroseconds(stop - start);    if (debug_mode)        PR_fprintf(output, "%40s: %6.2f usec\n", msg, d / count);}int main(int argc, char **argv){    /* The command line argument: -d is used to determine if the test is being run    in debug mode. The regress tool requires only one line output:PASS or FAIL.    All of the printfs associated with this test has been handled with a if (debug_mode)    test.    Usage: test_name [-d] [-c n]    */    PLOptStatus os;    PLOptState *opt = PL_CreateOptState(argc, argv, "Gdc:");    while (PL_OPT_EOL != (os = PL_GetNextOpt(opt)))    {        if (PL_OPT_BAD == os) continue;        switch (opt->option)        {        case 'G':  /* global threads */            thread_scope = PR_GLOBAL_THREAD;            break;        case 'd':  /* debug mode */            debug_mode = 1;            break;        case 'c':  /* loop counter */            count = atoi(opt->value);            break;        default:            break;        }    }    PL_DestroyOptState(opt);    PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);    output = PR_STDERR;    PR_STDIO_INIT();#ifdef XP_MAC    SetupMacPrintfLog("accept.log");    debug_mode = 1;#endif    timeoutTime = PR_SecondsToInterval(TIMEOUTSECS);    if (debug_mode)        PR_fprintf(output, "\nRun accept() sucessful connection tests\n");    Measure(AcceptUpdatedTest, "PR_Accept()");    Measure(AcceptReadTest, "PR_AcceptRead()");#ifdef WINNT    Measure(AcceptNotUpdatedTest, "PR_NTFast_Accept()");    Measure(AcceptReadNotUpdatedTest, "PR_NTFast_AcceptRead()");    Measure(AcceptReadCallbackTest, "PR_NTFast_AcceptRead_WithTimeoutCallback()");#endif    if (debug_mode)        PR_fprintf(output, "\nRun accept() timeout in the accept tests\n");#ifdef WINNT    Measure(TimeoutReadReadCallbackTest, "PR_NTFast_AcceptRead_WithTimeoutCallback()");#endif    Measure(TimeoutReadUpdatedTest, "PR_Accept()");    if (debug_mode)        PR_fprintf(output, "\nRun accept() timeout in the read tests\n");    Measure(TimeoutReadReadTest, "PR_AcceptRead()");#ifdef WINNT    Measure(TimeoutReadNotUpdatedTest, "PR_NTFast_Accept()");    Measure(TimeoutReadReadNotUpdatedTest, "PR_NTFast_AcceptRead()");    Measure(TimeoutReadReadCallbackTest, "PR_NTFast_AcceptRead_WithTimeoutCallback()");#endif    PR_fprintf(output, "%s\n", (failed_already) ? "FAIL" : "PASS");    return failed_already;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -