![]() |
![]() |
![]() |
GStreamer RTSP Server Reference Manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties |
struct GstRTSPSessionPool; struct GstRTSPSessionPoolClass; gboolean (*GstRTSPSessionPoolFunc) (GstRTSPSessionPool *pool
,gpointer user_data
); enum GstRTSPFilterResult; GstRTSPFilterResult (*GstRTSPSessionFilterFunc) (GstRTSPSessionPool *pool
,GstRTSPSession *session
,gpointer user_data
); GstRTSPSessionPool * gst_rtsp_session_pool_new (void
); void gst_rtsp_session_pool_set_max_sessions (GstRTSPSessionPool *pool
,guint max
); guint gst_rtsp_session_pool_get_max_sessions (GstRTSPSessionPool *pool
); guint gst_rtsp_session_pool_get_n_sessions (GstRTSPSessionPool *pool
); GstRTSPSession * gst_rtsp_session_pool_create (GstRTSPSessionPool *pool
); GstRTSPSession * gst_rtsp_session_pool_find (GstRTSPSessionPool *pool
,const gchar *sessionid
); gboolean gst_rtsp_session_pool_remove (GstRTSPSessionPool *pool
,GstRTSPSession *sess
); GList * gst_rtsp_session_pool_filter (GstRTSPSessionPool *pool
,GstRTSPSessionFilterFunc func
,gpointer user_data
); guint gst_rtsp_session_pool_cleanup (GstRTSPSessionPool *pool
); GSource * gst_rtsp_session_pool_create_watch (GstRTSPSessionPool *pool
);
struct GstRTSPSessionPool;
An object that keeps track of the active sessions. This object is usually attached to a GstRTSPServer object to manage the sessions in that server.
struct GstRTSPSessionPoolClass { GObjectClass parent_class; gchar * (*create_session_id) (GstRTSPSessionPool *pool); };
GObjectClass |
|
create a new random session id. Subclasses can create custom session ids and should not check if the session exists. |
gboolean (*GstRTSPSessionPoolFunc) (GstRTSPSessionPool *pool
,gpointer user_data
);
The function that will be called from the GSource watch on the session pool.
The function will be called when the pool must be cleaned up because one or more sessions timed out.
|
a GstRTSPSessionPool object |
|
user data that has been given when registering the handler |
Returns : |
FALSE if the source should be removed. |
typedef enum { GST_RTSP_FILTER_REMOVE, GST_RTSP_FILTER_KEEP, GST_RTSP_FILTER_REF, } GstRTSPFilterResult;
Possible return values for gst_rtsp_session_pool_filter()
.
GstRTSPFilterResult (*GstRTSPSessionFilterFunc) (GstRTSPSessionPool *pool
,GstRTSPSession *session
,gpointer user_data
);
This function will be called by the gst_rtsp_session_pool_filter()
. An
implementation should return a value of GstRTSPFilterResult.
When this function returns GST_RTSP_FILTER_REMOVE, session
will be removed
from pool
.
A return value of GST_RTSP_FILTER_KEEP will leave session
untouched in
pool
.
A value of GST_RTSP_FILTER_REF will add session
to the result GList of
gst_rtsp_session_pool_filter()
.
|
a GstRTSPSessionPool object |
|
a GstRTSPSession in pool
|
|
user data that has been given to gst_rtsp_session_pool_filter()
|
Returns : |
a GstRTSPFilterResult. |
GstRTSPSessionPool * gst_rtsp_session_pool_new (void
);
Create a new GstRTSPSessionPool instance.
Returns : |
A new GstRTSPSessionPool. g_object_unref() after usage. |
void gst_rtsp_session_pool_set_max_sessions (GstRTSPSessionPool *pool
,guint max
);
Configure the maximum allowed number of sessions in pool
to max
.
A value of 0 means an unlimited amount of sessions.
|
a GstRTSPSessionPool |
|
the maximum number of sessions |
guint gst_rtsp_session_pool_get_max_sessions
(GstRTSPSessionPool *pool
);
Get the maximum allowed number of sessions in pool
. 0 means an unlimited
amount of sessions.
|
a GstRTSPSessionPool |
Returns : |
the maximum allowed number of sessions. |
guint gst_rtsp_session_pool_get_n_sessions
(GstRTSPSessionPool *pool
);
Get the amount of active sessions in pool
.
|
a GstRTSPSessionPool |
Returns : |
the amount of active sessions in pool . |
GstRTSPSession * gst_rtsp_session_pool_create (GstRTSPSessionPool *pool
);
Create a new GstRTSPSession object in pool
.
|
a GstRTSPSessionPool |
Returns : |
a new GstRTSPSession. |
GstRTSPSession * gst_rtsp_session_pool_find (GstRTSPSessionPool *pool
,const gchar *sessionid
);
Find the session with sessionid
in pool
. The access time of the session
will be updated with gst_rtsp_session_touch()
.
|
the pool to search |
|
the session id |
Returns : |
the GstRTSPSession with sessionid or NULL when the session did
not exist. g_object_unref() after usage. |
gboolean gst_rtsp_session_pool_remove (GstRTSPSessionPool *pool
,GstRTSPSession *sess
);
Remove sess
from pool
, releasing the ref that the pool has on sess
.
|
a GstRTSPSessionPool |
|
a GstRTSPSession |
Returns : |
TRUE if the session was found and removed. |
GList * gst_rtsp_session_pool_filter (GstRTSPSessionPool *pool
,GstRTSPSessionFilterFunc func
,gpointer user_data
);
Call func
for each session in pool
. The result value of func
determines
what happens to the session. func
will be called with the session pool
locked so no further actions on pool
can be performed from func
.
If func
returns GST_RTSP_FILTER_REMOVE, the session will be removed from
pool
.
If func
returns GST_RTSP_FILTER_KEEP, the session will remain in pool
.
If func
returns GST_RTSP_FILTER_REF, the session will remain in pool
but
will also be added with an additional ref to the result GList of this
function..
|
a GstRTSPSessionPool |
|
a callback |
|
user data passed to func
|
Returns : |
a GList with all sessions for which func returned
GST_RTSP_FILTER_REF. After usage, each element in the GList should be unreffed
before the list is freed. |
guint gst_rtsp_session_pool_cleanup (GstRTSPSessionPool *pool
);
Inspect all the sessions in pool
and remove the sessions that are inactive
for more than their timeout.
|
a GstRTSPSessionPool |
Returns : |
the amount of sessions that got removed. |
GSource * gst_rtsp_session_pool_create_watch (GstRTSPSessionPool *pool
);
A GSource that will be dispatched when the session should be cleaned up.
|
a GstRTSPSessionPool |
"max-sessions"
property"max-sessions" guint : Read / Write
the maximum amount of sessions (0 = unlimited).
Default value: 0