diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-03-11 21:38:05 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-03-11 21:38:05 +0000 |
commit | 4e1d5dc0d96e099f12ea0127434b4f7029e95b2b (patch) | |
tree | 8471f75aefe77e864a4c9216f29ad04f2c8bf945 /pjmedia/include/pjmedia/transport.h | |
parent | cedeaec6e1f22463dc1e13e3dee467fc4dcd4019 (diff) |
Ticket #479: allow media transport framework to return transport specific info (for example, to know whether SRTP is enabled)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1860 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/include/pjmedia/transport.h')
-rw-r--r-- | pjmedia/include/pjmedia/transport.h | 70 |
1 files changed, 67 insertions, 3 deletions
diff --git a/pjmedia/include/pjmedia/transport.h b/pjmedia/include/pjmedia/transport.h index 2629cf87..fcf120da 100644 --- a/pjmedia/include/pjmedia/transport.h +++ b/pjmedia/include/pjmedia/transport.h @@ -207,12 +207,18 @@ PJ_BEGIN_DECL #include <pjmedia/sdp.h> + /** * Forward declaration for media transport. */ typedef struct pjmedia_transport pjmedia_transport; /** + * Forward declaration for media transport info. + */ +typedef struct pjmedia_transport_info pjmedia_transport_info; + +/** * This enumeration specifies the general behaviour of media processing */ typedef enum pjmedia_tranport_media_option @@ -228,6 +234,7 @@ typedef enum pjmedia_tranport_media_option } pjmedia_tranport_media_option; + /** * This structure describes the operations for the stream transport. */ @@ -239,7 +246,7 @@ struct pjmedia_transport_op * Application should call #pjmedia_transport_get_info() instead */ pj_status_t (*get_info)(pjmedia_transport *tp, - pjmedia_sock_info *info); + pjmedia_transport_info *info); /** * This function is called by the stream when the transport is about @@ -368,7 +375,14 @@ typedef enum pjmedia_transport_type PJMEDIA_TRANSPORT_TYPE_UDP, /** Media transport using ICE */ - PJMEDIA_TRANSPORT_TYPE_ICE + PJMEDIA_TRANSPORT_TYPE_ICE, + + /** + * Media transport SRTP, this transport is actually security adapter to be + * stacked with other transport to enable encryption on the underlying + * transport. + */ + PJMEDIA_TRANSPORT_TYPE_SRTP } pjmedia_transport_type; @@ -390,6 +404,56 @@ struct pjmedia_transport pjmedia_transport_op *op; }; +/** + * This structure describes buffer storage of transport specific info. + * The actual transport specific info contents will be defined by transport + * implementation. Note that some transport implementations do not need to + * provide specific info, since the general socket info is enough. + */ +typedef struct pjmedia_transport_specific_info +{ + /** + * Specify media transport type. + */ + pjmedia_transport_type type; + + /** + * Specify storage buffer size of transport specific info. + */ + int cbsize; + + /** + * Storage buffer of transport specific info. + */ + char buffer[PJMEDIA_TRANSPORT_SPECIFIC_INFO_MAXSIZE]; + +} pjmedia_transport_specific_info; + + +/** + * This structure describes transport informations, including general + * socket information and specific information of single transport or + * stacked transports (e.g: SRTP stacked on top of UDP) + */ +struct pjmedia_transport_info +{ + /** + * General socket info. + */ + pjmedia_sock_info sock_info; + + /** + * Specifies number of transport specific info included. + */ + int specific_info_cnt; + + /** + * Buffer storage of transport specific info. + */ + pjmedia_transport_specific_info spc_info[PJMEDIA_TRANSPORT_SPECIFIC_INFO_MAXCNT]; + +}; + /** * Get media socket info from the specified transport. The socket info @@ -403,7 +467,7 @@ struct pjmedia_transport * @return PJ_SUCCESS on success. */ PJ_INLINE(pj_status_t) pjmedia_transport_get_info(pjmedia_transport *tp, - pjmedia_sock_info *info) + pjmedia_transport_info *info) { if (tp->op->get_info) return (*tp->op->get_info)(tp, info); |