summaryrefslogtreecommitdiff
path: root/pjmedia/include/pjmedia/transport.h
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-03-11 21:38:05 +0000
committerBenny Prijono <bennylp@teluu.com>2008-03-11 21:38:05 +0000
commit4e1d5dc0d96e099f12ea0127434b4f7029e95b2b (patch)
tree8471f75aefe77e864a4c9216f29ad04f2c8bf945 /pjmedia/include/pjmedia/transport.h
parentcedeaec6e1f22463dc1e13e3dee467fc4dcd4019 (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.h70
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);