Changeset 580


Ignore:
Timestamp:
Jul 3, 2006 2:31:10 AM (18 years ago)
Author:
bennylp
Message:

Added TCP support in pjsip-perf (also tried on Linux)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/samples/pjsip-perf.c

    r579 r580  
    112112    pj_caching_pool      cp; 
    113113    pj_pool_t           *pool; 
     114    pj_bool_t            use_tcp; 
    114115    pj_str_t             local_addr; 
    115116    int                  local_port; 
     
    609610    pj_status_t status; 
    610611 
    611     /* Add UDP transport. */ 
     612    /* Add UDP/TCP transport. */ 
    612613    { 
    613614        pj_sockaddr_in addr; 
    614615        pjsip_host_port addrname; 
    615         pjsip_transport *tp; 
     616        const char *transport_type; 
    616617 
    617618        pj_memset(&addr, 0, sizeof(addr)); 
     
    623624            addrname.host = app.local_addr; 
    624625            addrname.port = 5060; 
    625         } 
     626        }  
    626627        if (app.local_port != 0) 
    627628            addrname.port = app.local_port; 
    628629 
    629         status = pjsip_udp_transport_start( app.sip_endpt, &addr,  
    630                                             (app.local_addr.slen ? &addrname:NULL), 
    631                                             1, &tp); 
     630        if (app.use_tcp) { 
     631            pj_sockaddr_in local_addr; 
     632            pjsip_tpfactory *tpfactory; 
     633             
     634            transport_type = "tcp"; 
     635            pj_sockaddr_in_init(&local_addr, 0, app.local_port); 
     636            status = pjsip_tcp_transport_start(app.sip_endpt, &local_addr, 
     637                                               app.thread_count, &tpfactory); 
     638            if (status == PJ_SUCCESS) { 
     639                app.local_addr = tpfactory->addr_name.host; 
     640                app.local_port = tpfactory->addr_name.port; 
     641            } 
     642        } else { 
     643            pjsip_transport *tp; 
     644 
     645            transport_type = "udp"; 
     646            status = pjsip_udp_transport_start(app.sip_endpt, &addr,  
     647                                               (app.local_addr.slen ? &addrname:NULL), 
     648                                               app.thread_count, &tp); 
     649            if (status == PJ_SUCCESS) { 
     650                app.local_addr = tp->local_name.host; 
     651                app.local_port = tp->local_name.port; 
     652            } 
     653 
     654        } 
    632655        if (status != PJ_SUCCESS) { 
    633             app_perror(THIS_FILE, "Unable to start UDP transport", status); 
     656            app_perror(THIS_FILE, "Unable to start transport", status); 
    634657            return status; 
    635658        } 
    636  
    637         app.local_addr = tp->local_name.host; 
    638         app.local_port = tp->local_name.port; 
    639659 
    640660        app.local_uri.ptr = pj_pool_alloc(app.pool, 128); 
    641661        app.local_uri.slen = pj_ansi_sprintf(app.local_uri.ptr,  
    642                                              "<sip:pjsip-perf@%.*s:%d>", 
    643                                              (int)tp->local_name.host.slen, 
    644                                              tp->local_name.host.ptr, 
    645                                              tp->local_name.port); 
     662                                             "<sip:pjsip-perf@%.*s:%d;transport=%s>", 
     663                                             (int)app.local_addr.slen, 
     664                                             app.local_addr.ptr, 
     665                                             app.local_port, 
     666                                             transport_type); 
    646667 
    647668        app.local_contact = app.local_uri; 
     
    951972        "   --method=METHOD, -m     Set the test method (default: OPTIONS)\n" 
    952973        "   --local-port=PORT, -p   Set local port [default: 5060]\n" 
     974        "   --use-tcp, -T           Use TCP instead of UDP (default: no)\n" 
    953975        "   --thread-count=N        Set number of worker threads (default=1)\n" 
    954976        "   --stateless, -s         Set client to operate in stateless mode\n" 
     
    9881010        { "real-sdp",       0, 0, OPT_REAL_SDP }, 
    9891011        { "verbose",        0, 0, 'v' }, 
     1012        { "use-tcp",        0, 0, 'T' }, 
    9901013        { NULL, 0, 0, 0 }, 
    9911014    }; 
     
    10681091            break; 
    10691092 
     1093        case 'T': 
     1094            app.use_tcp = PJ_TRUE; 
     1095            break; 
     1096 
    10701097        default: 
    10711098            PJ_LOG(1,(THIS_FILE,  
     
    13421369int main(int argc, char *argv[]) 
    13431370{ 
    1344     pj_log_set_level(3); 
    13451371 
    13461372    if (create_app() != 0) 
     
    13591385        pj_log_set_level(4); 
    13601386        pjsip_endpt_register_module(app.sip_endpt, &msg_logger); 
     1387    } else { 
     1388        pj_log_set_level(3); 
    13611389    } 
    13621390 
     
    13671395            app.client.stateless) 
    13681396        { 
    1369             PJ_LOG(3,(THIS_FILE, "Info: --stateless option makes no sense for INVITE, ignored.")); 
     1397            PJ_LOG(3,(THIS_FILE,  
     1398                      "Info: --stateless option makes no sense for INVITE, " 
     1399                      "ignored.")); 
    13701400        } 
    13711401    } 
    13721402 
    13731403    if (app.real_sdp) { 
    1374         PJ_LOG(3,(THIS_FILE, "Info: client/server using real SDP from PJMEDIA")); 
     1404        PJ_LOG(3,(THIS_FILE,  
     1405                  "Info: client/server using real SDP from PJMEDIA")); 
    13751406    } else { 
    13761407        PJ_LOG(3,(THIS_FILE, "Info: client/server using dummy SDP")); 
     
    13991430         
    14001431 
    1401         PJ_LOG(3,(THIS_FILE, "Starting %d %s, please wait..",  
    1402                   app.client.job_count, test_type)); 
     1432        PJ_LOG(3,(THIS_FILE, "Sending %d %s to %.*s, please wait..",  
     1433                  app.client.job_count, test_type, 
     1434                  (int)app.client.dst_uri.slen, app.client.dst_uri.ptr)); 
    14031435 
    14041436        for (i=0; i<app.thread_count; ++i) { 
     
    14561488 
    14571489        printf("Receiving requests on the following URIs:\n" 
    1458                "  sip:0@%.*s:%d    for stateless handling (non-INVITE only)\n" 
    1459                "  sip:1@%.*s:%d    for stateful handling (INVITE and non-INVITE)\n" 
    1460                "  sip:2@%.*s:%d    for call handling (INVITE only)\n", 
     1490               "  sip:0@%.*s:%d;transport=%s    for stateless handling (non-INVITE only)\n" 
     1491               "  sip:1@%.*s:%d;transport=%s    for stateful handling (INVITE and non-INVITE)\n" 
     1492               "  sip:2@%.*s:%d;transport=%s    for call handling (INVITE only)\n", 
    14611493               (int)app.local_addr.slen, 
    14621494               app.local_addr.ptr, 
    14631495               app.local_port, 
     1496               (app.use_tcp ? "tcp" : "udp"), 
    14641497               (int)app.local_addr.slen, 
    14651498               app.local_addr.ptr, 
    14661499               app.local_port, 
     1500               (app.use_tcp ? "tcp" : "udp"), 
    14671501               (int)app.local_addr.slen, 
    14681502               app.local_addr.ptr, 
    1469                app.local_port); 
     1503               app.local_port, 
     1504               (app.use_tcp ? "tcp" : "udp")); 
    14701505 
    14711506        for (i=0; i<app.thread_count; ++i) { 
Note: See TracChangeset for help on using the changeset viewer.