![]() |
![]() |
![]() |
GStreamer RTSP Server Reference Manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties |
struct GstRTSPSession; struct GstRTSPSessionClass; GstRTSPSession * gst_rtsp_session_new (const gchar *sessionid
); const gchar * gst_rtsp_session_get_sessionid (GstRTSPSession *session
); gchar * gst_rtsp_session_get_header (GstRTSPSession *session
); void gst_rtsp_session_set_timeout (GstRTSPSession *session
,guint timeout
); guint gst_rtsp_session_get_timeout (GstRTSPSession *session
); void gst_rtsp_session_touch (GstRTSPSession *session
); void gst_rtsp_session_prevent_expire (GstRTSPSession *session
); void gst_rtsp_session_allow_expire (GstRTSPSession *session
); gint gst_rtsp_session_next_timeout (GstRTSPSession *session
,GTimeVal *now
); gboolean gst_rtsp_session_is_expired (GstRTSPSession *session
,GTimeVal *now
); GstRTSPSessionMedia * gst_rtsp_session_manage_media (GstRTSPSession *sess
,const gchar *path
,GstRTSPMedia *media
); gboolean gst_rtsp_session_release_media (GstRTSPSession *sess
,GstRTSPSessionMedia *media
); GstRTSPSessionMedia * gst_rtsp_session_get_media (GstRTSPSession *sess
,const gchar *path
,gint *matched
); enum GstRTSPFilterResult; GstRTSPFilterResult (*GstRTSPSessionFilterFunc) (GstRTSPSession *sess
,GstRTSPSessionMedia *media
,gpointer user_data
); GList * gst_rtsp_session_filter (GstRTSPSession *sess
,GstRTSPSessionFilterFunc func
,gpointer user_data
);
"sessionid" gchar* : Read / Write / Construct Only "timeout" guint : Read / Write "timeout-always-visible" gboolean : Read / Write
The GstRTSPSession is identified by an id, unique in the GstRTSPSessionPool that created the session and manages media and its configuration.
A GstRTSPSession has a timeout that can be retrieved with
gst_rtsp_session_get_timeout()
. You can check if the sessions is expired with
gst_rtsp_session_is_expired()
. gst_rtsp_session_touch()
will reset the
expiration counter of the session.
When a client configures a media with SETUP, a session will be created to
keep track of the configuration of that media. With
gst_rtsp_session_manage_media()
, the media is added to the managed media
in the session. With gst_rtsp_session_release_media()
the media can be
released again from the session. Managed media is identified in the sessions
with a url. Use gst_rtsp_session_get_media()
to get the media that matches
(part of) the given url.
The media in a session can be iterated with gst_rtsp_session_filter()
.
Last reviewed on 2013-07-11 (1.0.0)
struct GstRTSPSession;
Session information kept by the server for a specific client. One client session, identified with a session id, can handle multiple medias identified with the url of a media.
GstRTSPSession * gst_rtsp_session_new (const gchar *sessionid
);
Create a new GstRTSPSession instance with sessionid
.
|
a session id |
Returns : |
a new GstRTSPSession. [transfer full] |
const gchar * gst_rtsp_session_get_sessionid (GstRTSPSession *session
);
Get the sessionid of session
.
|
a GstRTSPSession |
Returns : |
the sessionid of session . The value remains valid
as long as session is alive. [transfer none]
|
gchar * gst_rtsp_session_get_header (GstRTSPSession *session
);
Get the string that can be placed in the Session header field.
|
a GstRTSPSession |
Returns : |
the Session header of session . g_free() after usage. [transfer full]
|
void gst_rtsp_session_set_timeout (GstRTSPSession *session
,guint timeout
);
Configure session
for a timeout of timeout
seconds. The session will be
cleaned up when there is no activity for timeout
seconds.
|
a GstRTSPSession |
|
the new timeout |
guint gst_rtsp_session_get_timeout (GstRTSPSession *session
);
Get the timeout value of session
.
|
a GstRTSPSession |
Returns : |
the timeout of session in seconds. |
void gst_rtsp_session_touch (GstRTSPSession *session
);
Update the last_access time of the session to the current time.
|
a GstRTSPSession |
void gst_rtsp_session_prevent_expire (GstRTSPSession *session
);
Prevent session
from expiring.
|
a GstRTSPSession |
void gst_rtsp_session_allow_expire (GstRTSPSession *session
);
Allow session
to expire. This method must be called an equal
amount of time as gst_rtsp_session_prevent_expire()
.
|
a GstRTSPSession |
gint gst_rtsp_session_next_timeout (GstRTSPSession *session
,GTimeVal *now
);
gst_rtsp_session_next_timeout
is deprecated and should not be used in newly-written code. Use gst_rtsp_session_next_timeout_usec()
instead.
Get the amount of milliseconds till the session will expire.
|
a GstRTSPSession |
|
the current system time. [transfer none] |
Returns : |
the amount of milliseconds since the session will time out. |
gboolean gst_rtsp_session_is_expired (GstRTSPSession *session
,GTimeVal *now
);
gst_rtsp_session_is_expired
is deprecated and should not be used in newly-written code. Use gst_rtsp_session_is_expired_usec()
instead.
Check if session
timeout out.
|
a GstRTSPSession |
|
the current system time. [transfer none] |
Returns : |
TRUE if session timed out |
GstRTSPSessionMedia * gst_rtsp_session_manage_media (GstRTSPSession *sess
,const gchar *path
,GstRTSPMedia *media
);
Manage the media object obj
in sess
. path
will be used to retrieve this
media from the session with gst_rtsp_session_get_media()
.
Ownership is taken from media
.
|
a GstRTSPSession |
|
the path for the media |
|
a GstRTSPMedia. [transfer full] |
Returns : |
a new GstRTSPSessionMedia object. [transfer none]
|
gboolean gst_rtsp_session_release_media (GstRTSPSession *sess
,GstRTSPSessionMedia *media
);
Release the managed media
in sess
, freeing the memory allocated by it.
|
a GstRTSPSession |
|
a GstRTSPMedia. [transfer none] |
Returns : |
TRUE if there are more media session left in sess . |
GstRTSPSessionMedia * gst_rtsp_session_get_media (GstRTSPSession *sess
,const gchar *path
,gint *matched
);
Get the session media for path
. matched
will contain the number of matched
characters of path
.
|
a GstRTSPSession |
|
the path for the media |
|
the amount of matched characters. [out] |
Returns : |
the configuration for path in sess . [transfer none]
|
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) (GstRTSPSession *sess
,GstRTSPSessionMedia *media
,gpointer user_data
);
This function will be called by the gst_rtsp_session_filter()
. An
implementation should return a value of GstRTSPFilterResult.
When this function returns GST_RTSP_FILTER_REMOVE, media
will be removed
from sess
.
A return value of GST_RTSP_FILTER_KEEP will leave media
untouched in
sess
.
A value of GST_RTSP_FILTER_REF will add media
to the result GList of
gst_rtsp_session_filter()
.
|
a GstRTSPSession object |
|
a GstRTSPSessionMedia in sess
|
|
user data that has been given to gst_rtsp_session_filter()
|
Returns : |
a GstRTSPFilterResult. |
GList * gst_rtsp_session_filter (GstRTSPSession *sess
,GstRTSPSessionFilterFunc func
,gpointer user_data
);
Call func
for each media in sess
. The result value of func
determines
what happens to the media. func
will be called with sess
locked so no further actions on sess
can be performed from func
.
If func
returns GST_RTSP_FILTER_REMOVE, the media will be removed from
sess
.
If func
returns GST_RTSP_FILTER_KEEP, the media will remain in sess
.
If func
returns GST_RTSP_FILTER_REF, the media will remain in sess
but
will also be added with an additional ref to the result GList of this
function..
When func
is NULL
, GST_RTSP_FILTER_REF will be assumed for all media.
|
a GstRTSPSession |
|
a callback. [scope call][allow-none] |
|
user data passed to func . [closure]
|
Returns : |
a GList with all
media for which func returned GST_RTSP_FILTER_REF. After usage, each
element in the GList should be unreffed before the list is freed. [element-type GstRTSPSessionMedia][transfer full]
|