diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-09-14 16:07:49 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-09-14 16:07:49 +0000 |
commit | e015ebe064c6f5120ef2af2b73ce52796a06f790 (patch) | |
tree | 0b3ed8be366ec88d571195568bb2aa6002f2e18b /pjsip/src | |
parent | f5ee360b0b649ef24fe671b6e37006badce0634d (diff) |
Added pjsip_transport_register_type() API to register new transport type.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@720 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r-- | pjsip/src/pjsip/sip_transport.c | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c index e18a9048..909632e8 100644 --- a/pjsip/src/pjsip/sip_transport.c +++ b/pjsip/src/pjsip/sip_transport.c @@ -97,13 +97,14 @@ struct transport_key /* * Transport names. */ -const struct +struct { pjsip_transport_type_e type; pj_uint16_t port; pj_str_t name; unsigned flag; -} transport_names[] = + char name_buf[16]; +} transport_names[16] = { { PJSIP_TRANSPORT_UNSPECIFIED, 0, {"Unspecified", 11}, 0}, { PJSIP_TRANSPORT_UDP, 5060, {"UDP", 3}, PJSIP_TRANSPORT_DATAGRAM}, @@ -116,6 +117,42 @@ const struct /* + * Register new transport type to PJSIP. + */ +PJ_DECL(pj_status_t) pjsip_transport_register_type(unsigned tp_flag, + const char *tp_name, + int def_port, + int *p_tp_type) +{ + unsigned i; + + PJ_ASSERT_RETURN(tp_flag && tp_name && def_port, PJ_EINVAL); + PJ_ASSERT_RETURN(pj_ansi_strlen(tp_name) < + PJ_ARRAY_SIZE(transport_names[0].name_buf), + PJ_ENAMETOOLONG); + + for (i=1; i<PJ_ARRAY_SIZE(transport_names); ++i) { + if (transport_names[i].type == 0) + break; + } + + if (i == PJ_ARRAY_SIZE(transport_names)) + return PJ_ETOOMANY; + + transport_names[i].type = (pjsip_transport_type_e)i; + transport_names[i].port = (pj_uint16_t)def_port; + pj_ansi_strcpy(transport_names[i].name_buf, tp_name); + transport_names[i].name = pj_str(transport_names[i].name_buf); + transport_names[i].flag = tp_flag; + + if (p_tp_type) + *p_tp_type = i; + + return PJ_SUCCESS; +} + + +/* * Get transport type from name. */ PJ_DEF(pjsip_transport_type_e) |