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

📄 application.pc

📁 simulator for ad hoc
💻 PC
📖 第 1 页 / 共 2 页
字号:
        }#ifdef NSTELNET_STUFF        else if (strcmp(appStr, "NSTELNET") == 0) {            char sessDurationStr[GLOMO_MAX_STRING_LENGTH];            char startTimeStr[GLOMO_MAX_STRING_LENGTH];            NODE_ADDR sourceAddr, destAddr;            short     sourcePort, destPort;            clocktype startTime, sessDuration;            int itemsToSend;            int connId;                         /* For every NSTELNET entry in the app config file, call              *  AppNsTelnetClientInit and AppNsTelnetServerInit             */            retVal = sscanf(appInput.inputStrings[i],                            "%s %ld %ld %s %s %u %hu %hu",                             appStr, &sourceAddr, &destAddr,                            sessDurationStr, startTimeStr,                            &connId, &sourcePort, &destPort);            if (retVal != 8) {                fprintf(stderr, "Application: Wrong configuration format!\n"                assert(0); abort();            }            if (node->nodeAddr == sourceAddr || node->nodeAddr == destAddr) {                startTime = GLOMO_ConvertToClock(startTimeStr);                sessDuration = GLOMO_ConvertToClock(sessDurationStr);#ifdef DEBUG                if (node->nodeAddr == sourceAddr) {                    printf("Starting NSTELNET client with:\n");                }                else {                    printf("Starting NSTELNET server with:\n");                }                printf(" source address: %u\n", node->nodeAddr);                printf(" source port: %u\n", sourcePort);                printf(" destination address: %u\n", destAddr);                printf(" destination port: %u\n", destPort);                printf(" connection id: %u\n", connId);                                ctoa(sessDuration, clockStr);                printf(" session duration: %s\n", clockStr);                                ctoa(startTime, clockStr);                printf(" start time: %s\n", clockStr);#endif                node->appData.telnetSessTime = sessDuration;                                if (node->nodeAddr == sourceAddr) {                    AppNstelnetClientInit(node, sourcePort, destAddr, destPort,                                          connId, startTime);                }                else {                    AppNstelnetServerInit(node, destPort, sourceAddr,                                           sourcePort, connId, startTime);                }            }        }#endif        else if (strcmp(appStr, "CBR") == 0) {            NODE_ADDR sourceAddr, destAddr;            int itemsToSend, itemSize;            char intervalStr[GLOMO_MAX_STRING_LENGTH];            char startTimeStr[GLOMO_MAX_STRING_LENGTH];            char endTimeStr[GLOMO_MAX_STRING_LENGTH];            retVal = sscanf(appInput.inputStrings[i],                            "%s %ld %ld %ld %ld %s %s %s",                            appStr, &sourceAddr, &destAddr,                            &itemsToSend, &itemSize,                            intervalStr, startTimeStr, endTimeStr);            if (retVal != 8) {                fprintf(stderr,                        "Wrong CBR configuration format!\n"                        "CBR <src> <dest> <items to send> <item size> "                        "<interval> <start time> <end time>\n");                assert(0); abort();            }            if (sourceAddr == destAddr) {                fprintf(stderr, "Application: CBR configuration "                        "has same source/dest (node %ld) pair!\n", sourceAddr);                assert(0); abort();            }            if (node->nodeAddr == sourceAddr) {                clocktype startTime, endTime, interval;                startTime = GLOMO_ConvertToClock(startTimeStr);                endTime = GLOMO_ConvertToClock(endTimeStr);                interval = GLOMO_ConvertToClock(intervalStr);                #ifdef DEBUG                    printf("Starting CBR client with:\n");                    printf(" source: %u\n", node->nodeAddr);                    printf(" destination: %u\n", destAddr);                    printf(" items to send: %ld\n", itemsToSend);                    printf(" item size: %ld\n", itemSize);                    ctoa(interval, clockStr);                    printf(" interval: %s\n", clockStr);                    ctoa(startTime, clockStr);                    printf(" start time: %s\n", clockStr);                    ctoa(endTime, clockStr);                    printf("  end time: %s\n", clockStr);                #endif                AppCbrClientInit(node, destAddr, itemsToSend, itemSize,                                 interval, startTime, endTime);            }            else if (node->nodeAddr == destAddr) {                AppCbrServerInit(node);            }        }        // else if (strcmp(appStr, "RUMOR") == 0) {        //    if (node->nodeAddr < NSERVER) {        //        AppRumorInit(node, nodeInput);        //    }        //}        else if (strcmp(appStr, "HTTP") == 0) {            NODE_ADDR clientAddr;            NODE_ADDR *serverAddrs;            long numServerAddrs;            long count;            long itemsToSend, itemSize;            char threshStr[GLOMO_MAX_STRING_LENGTH];            char startTimeStr[GLOMO_MAX_STRING_LENGTH];            tempStr = appInput.inputStrings[i] + 4;/*            retVal = sscanf(tempStr, "%ld%ld",                            &clientAddr, &numServerAddrs);            assert (retVal == 2);*/            retVal = sscanf(tempStr, "%s", clockStr);            tempStr += strlen(clockStr) + 1;            clientAddr = atol(clockStr);            retVal = sscanf(tempStr, "%s", clockStr);            numServerAddrs = atol(clockStr);            tempStr += strlen(clockStr) + 1;            assert (numServerAddrs > 0);            serverAddrs =                checked_pc_malloc(sizeof(NODE_ADDR) * numServerAddrs);            for (count = 0; count < numServerAddrs; count++)            {                retVal = sscanf(tempStr, "%s", clockStr);                assert (retVal == 1);                serverAddrs[count] = atol(clockStr);                tempStr += strlen(clockStr) + 1;            }            retVal = sscanf(tempStr, "%s%s", startTimeStr, threshStr);            assert (retVal == 2);            if (node->nodeAddr == clientAddr)            {                clocktype threshTime,                          startTime;                threshTime = GLOMO_ConvertToClock(threshStr);                startTime = GLOMO_ConvertToClock(startTimeStr);#ifdef DEBUG                printf("#%ld HTTP %ld servers: ", clientAddr, numServerAddrs);                for (count = 0; count < numServerAddrs; count++)                    printf("%ld ", serverAddrs[count]);                printf("\n");#endif                AppHttpClientInit(node, serverAddrs, numServerAddrs,                                  startTime, threshTime);            }        }        else if (strcmp(appStr, "HTTPD") == 0) {            NODE_ADDR serverAddr;            tempStr = appInput.inputStrings[i] + 5;            retVal = sscanf(tempStr, "%s", clockStr);            serverAddr = atol(clockStr);            assert(retVal == 1);            if (serverAddr == node->nodeAddr)                AppHttpServerInit(node);        }        else {            printf("Application: Unknown application %s\n", appStr);            assert(0); abort();        }    }}/* * NAME:        GLOMO_AppLayer. * PURPOSE:     call proper protocol to process messages.  * PARAMETERS:  node - pointer to the node,  *              msg - pointer to the received message. * RETURN:      none.  */void GLOMO_AppLayer(GlomoNode *node, Message *msg){    switch(GLOMO_MsgGetProtocol(msg)) {    case APP_ROUTING_BELLMANFORD:        RoutingBellmanfordLayer(node, msg);        break;    case APP_ROUTING_WRP:        RoutingWrpLayer(node, msg);        break;    case ROUTING_PROTOCOL_FISHEYE:        RoutingFisheyeLayer(node,msg);        break;    case APP_ROUTING_NS_DSDV:                    RoutingNsDsdvLayer(node, msg);        break;    case APP_ROUTING_STATIC:        RoutingStaticLayer(node, msg);        break;#ifdef NSTELNET_STUFF    case APP_NSTELNET_CLIENT:        AppLayerNstelnetClient(node, msg);        break;#endif    case APP_TELNET_CLIENT:        AppLayerTelnetClient(node, msg);        break;    case APP_TELNET_SERVER:        AppLayerTelnetServer(node, msg);        break;    case APP_FTP_CLIENT:        AppLayerFtpClient(node, msg);        break;    case APP_FTP_SERVER:        AppLayerFtpServer(node, msg);        break;    case APP_GEN_FTP_CLIENT:        AppLayerGenFtpClient(node, msg);        break;    case APP_GEN_FTP_SERVER:        AppLayerGenFtpServer(node, msg);        break;    case APP_CBR_CLIENT:        AppLayerCbrClient(node, msg);        break;    case APP_CBR_SERVER:        AppLayerCbrServer(node, msg);        break;    case APP_HTTP_CLIENT:        AppLayerHttpClient(node, msg);        break;    case APP_HTTP_SERVER:        AppLayerHttpServer(node, msg);        break;    //case APP_RUMOR:    //    AppLayerRumor(node, msg);    //    break;    default:        AppLayerHandleUserAppEvent(            node, node->appData.userApplicationData, msg);        break;    }}/* * NAME:        GLOMO_AppFinalize. * PURPOSE:     call protocols to print statistics.  * PARAMETERS:  node - pointer to the node,  * RETURN:      none.  */void GLOMO_AppFinalize(GlomoNode *node){    AppInfo *appList = NULL;    AppInfo *nextApp = NULL;    switch(node->appData.routingProtocol)      {        case APP_ROUTING_BELLMANFORD:            RoutingBellmanfordFinalize(node);            break;        case APP_ROUTING_WRP:            RoutingWrpFinalize(node);            break;        case ROUTING_PROTOCOL_FISHEYE:            RoutingFisheyeFinalize(node);            break;                    case APP_ROUTING_NS_DSDV:            RoutingNsDsdvFinalize(node);            break;        case APP_ROUTING_STATIC:            RoutingStaticFinalize(node);            break;        default:             break;    }    for (appList = node->appData.appPtr; appList != NULL; appList = nextApp) {        /*         * Get application specific data structure and call         * the corresponding protocol to print the stats.         */         switch (appList->appType)         {            case APP_TELNET_CLIENT:                AppTelnetClientFinalize(node, (GlomoAppTelnetClient *)                                         appList->appDetail);                break;            case APP_TELNET_SERVER:                AppTelnetServerFinalize(node, (GlomoAppTelnetServer *)                                         appList->appDetail);                break;                    case APP_NSTELNET_CLIENT:                break;                    case APP_FTP_CLIENT:                AppFtpClientFinalize(node, (GlomoAppFtpClient *)                                      appList->appDetail);                break;            case APP_FTP_SERVER:                AppFtpServerFinalize(node, (GlomoAppFtpServer *)                                      appList->appDetail);                break;            case APP_GEN_FTP_CLIENT:                AppGenFtpClientFinalize(node, (GlomoAppGenFtpClient *)                                        appList->appDetail);                break;            case APP_GEN_FTP_SERVER:                AppGenFtpServerFinalize(node, (GlomoAppGenFtpServer *)                                        appList->appDetail);                break;            case APP_CBR_CLIENT:                AppCbrClientFinalize(node, (GlomoAppCbrClient *)                                     appList->appDetail);                break;            case APP_CBR_SERVER:                AppCbrServerFinalize(node, (GlomoAppCbrServer *)                                     appList->appDetail);                break;            case APP_HTTP_CLIENT:                AppHttpClientFinalize(node, (GlomoAppHttpClient *)                                      appList->appDetail);                break;            case APP_HTTP_SERVER:                AppHttpServerFinalize(node, (GlomoAppHttpServer *)                                      appList->appDetail);                break;            //case APP_RUMOR:            //     break;        }        nextApp = appList->appNext;        free(appList);    }        AppLayerFinalizeUserApps(node, node->appData.userApplicationData);}

⌨️ 快捷键说明

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