Changeset 720 for pjproject


Ignore:
Timestamp:
Sep 14, 2006 4:07:49 PM (18 years ago)
Author:
bennylp
Message:

Added pjsip_transport_register_type() API to register new transport type.

Location:
pjproject/trunk/pjsip
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/include/pjsip/sip_transport.h

    r622 r720  
    7979#define PJSIP_TRANSPORT_IS_SECURE(tp)       \ 
    8080            ((tp)->flag & PJSIP_TRANSPORT_SECURE) 
     81 
     82/** 
     83 * Register new transport type to PJSIP. The PJSIP transport framework 
     84 * contains the info for some standard transports, as declared by 
     85 * #pjsip_transport_type_e. Application may use non-standard transport 
     86 * with PJSIP, but before it does so, it must register the information 
     87 * about the new transport type to PJSIP by calling this function. 
     88 * 
     89 * @param tp_flag   The flags describing characteristics of this 
     90 *                  transport type. 
     91 * @param tp_name   Transport type name. 
     92 * @param def_port  Default port to be used for the transport. 
     93 * @param p_tp_type On successful registration, it will be filled with 
     94 *                  the registered type. This argument is optional. 
     95 * 
     96 * @return          PJ_SUCCESS if registration is successful, or 
     97 *                  PJSIP_ETYPEEXISTS if the same transport type has 
     98 *                  already been registered. 
     99 */ 
     100PJ_DECL(pj_status_t) pjsip_transport_register_type(unsigned tp_flag, 
     101                                                   const char *tp_name, 
     102                                                   int def_port, 
     103                                                   int *p_tp_type); 
     104 
    81105 
    82106/** 
  • pjproject/trunk/pjsip/include/pjsip/sip_types.h

    r622 r720  
    8080 
    8181    /** Loopback (datagram, unreliable) */ 
    82     PJSIP_TRANSPORT_LOOP_DGRAM 
     82    PJSIP_TRANSPORT_LOOP_DGRAM, 
     83 
     84    /** Start of user defined transport */ 
     85    PJSIP_TRANSPORT_START_OTHER 
    8386 
    8487} pjsip_transport_type_e; 
  • pjproject/trunk/pjsip/src/pjsip/sip_transport.c

    r635 r720  
    9898 * Transport names. 
    9999 */ 
    100 const struct 
     100struct 
    101101{ 
    102102    pjsip_transport_type_e type; 
     
    104104    pj_str_t               name; 
    105105    unsigned               flag; 
    106 } transport_names[] =  
     106    char                   name_buf[16]; 
     107} transport_names[16] =  
    107108{ 
    108109    { PJSIP_TRANSPORT_UNSPECIFIED, 0, {"Unspecified", 11}, 0}, 
     
    114115    { PJSIP_TRANSPORT_LOOP_DGRAM, 15060, {"LOOP-DGRAM", 10}, PJSIP_TRANSPORT_DATAGRAM}, 
    115116}; 
     117 
     118 
     119/* 
     120 * Register new transport type to PJSIP. 
     121 */ 
     122PJ_DECL(pj_status_t) pjsip_transport_register_type(unsigned tp_flag, 
     123                                                   const char *tp_name, 
     124                                                   int def_port, 
     125                                                   int *p_tp_type) 
     126{ 
     127    unsigned i; 
     128 
     129    PJ_ASSERT_RETURN(tp_flag && tp_name && def_port, PJ_EINVAL); 
     130    PJ_ASSERT_RETURN(pj_ansi_strlen(tp_name) <  
     131                        PJ_ARRAY_SIZE(transport_names[0].name_buf),  
     132                     PJ_ENAMETOOLONG); 
     133 
     134    for (i=1; i<PJ_ARRAY_SIZE(transport_names); ++i) { 
     135        if (transport_names[i].type == 0) 
     136            break; 
     137    } 
     138 
     139    if (i == PJ_ARRAY_SIZE(transport_names)) 
     140        return PJ_ETOOMANY; 
     141 
     142    transport_names[i].type = (pjsip_transport_type_e)i; 
     143    transport_names[i].port = (pj_uint16_t)def_port; 
     144    pj_ansi_strcpy(transport_names[i].name_buf, tp_name); 
     145    transport_names[i].name = pj_str(transport_names[i].name_buf); 
     146    transport_names[i].flag = tp_flag; 
     147 
     148    if (p_tp_type) 
     149        *p_tp_type = i; 
     150 
     151    return PJ_SUCCESS; 
     152} 
    116153 
    117154 
Note: See TracChangeset for help on using the changeset viewer.