summaryrefslogtreecommitdiffstats
path: root/gst/rtsp/rtspmessage.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2006-09-18 17:37:46 +0000
committerWim Taymans <wim.taymans@gmail.com>2006-09-18 17:37:46 +0000
commita437e9f0edd49646c2fe36162f77575e219b7efa (patch)
treeb028fe57793da3d6545d3892021dc08c0a790b13 /gst/rtsp/rtspmessage.c
parentee58147b3d3f135f7a1c8c80f38bd2b5767d524f (diff)
gst/rtsp/gstrtspsrc.*: Small cleanups, added documentation.
Original commit message from CVS: * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_media_to_caps), (gst_rtspsrc_send), (gst_rtspsrc_parse_methods), (gst_rtspsrc_open), (gst_rtspsrc_close), (gst_rtspsrc_play), (gst_rtspsrc_pause), (gst_rtspsrc_change_state), (gst_rtspsrc_uri_get_uri), (gst_rtspsrc_uri_set_uri): * gst/rtsp/gstrtspsrc.h: Small cleanups, added documentation. Try to clean up the requests and responses. Refactor parsing the supported methods. * gst/rtsp/rtspconnection.c: (rtsp_connection_open), (rtsp_connection_create), (rtsp_connection_send), (parse_response_status), (parse_request_line), (rtsp_connection_receive), (rtsp_connection_close), (rtsp_connection_free): * gst/rtsp/rtsptransport.c: (rtsp_transport_new), (rtsp_transport_init), (rtsp_transport_parse), (rtsp_transport_free): * gst/rtsp/rtspurl.c: (rtsp_url_parse): * gst/rtsp/sdpmessage.c: (sdp_message_new), (sdp_message_init), (sdp_message_clean), (sdp_message_free), (sdp_media_new), (sdp_media_init), (sdp_message_parse_buffer), (sdp_message_dump): Use g_return_val some more. * gst/rtsp/rtspdefs.h: Add more enum values to track initial states. * gst/rtsp/rtspmessage.c: (rtsp_message_new_request), (rtsp_message_init_request), (rtsp_message_new_response), (rtsp_message_init_response), (rtsp_message_init_data), (rtsp_message_unset), (rtsp_message_free), (rtsp_message_add_header), (rtsp_message_remove_header), (rtsp_message_get_header), (rtsp_message_set_body), (rtsp_message_take_body), (rtsp_message_get_body), (rtsp_message_steal_body), (rtsp_message_dump): * gst/rtsp/rtspmessage.h: Reorder arguments, object goes as the first one. Use g_return_val some more.
Diffstat (limited to 'gst/rtsp/rtspmessage.c')
-rw-r--r--gst/rtsp/rtspmessage.c132
1 files changed, 77 insertions, 55 deletions
diff --git a/gst/rtsp/rtspmessage.c b/gst/rtsp/rtspmessage.c
index fd45f599..bd1473bb 100644
--- a/gst/rtsp/rtspmessage.c
+++ b/gst/rtsp/rtspmessage.c
@@ -20,84 +20,69 @@
#include "rtspmessage.h"
RTSPResult
-rtsp_message_new_request (RTSPMethod method, gchar * uri, RTSPMessage ** msg)
+rtsp_message_new_request (RTSPMessage ** msg, RTSPMethod method, gchar * uri)
{
RTSPMessage *newmsg;
- if (msg == NULL || uri == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (uri != NULL, RTSP_EINVAL);
newmsg = g_new0 (RTSPMessage, 1);
*msg = newmsg;
- return rtsp_message_init_request (method, uri, newmsg);
+ return rtsp_message_init_request (newmsg, method, uri);
}
RTSPResult
-rtsp_message_init_request (RTSPMethod method, gchar * uri, RTSPMessage * msg)
+rtsp_message_init_request (RTSPMessage * msg, RTSPMethod method, gchar * uri)
{
- if (msg == NULL || uri == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (uri != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+
+ rtsp_message_unset (msg);
msg->type = RTSP_MESSAGE_REQUEST;
msg->type_data.request.method = method;
- g_free (msg->type_data.request.uri);
msg->type_data.request.uri = g_strdup (uri);
-
- if (msg->hdr_fields != NULL)
- g_hash_table_destroy (msg->hdr_fields);
msg->hdr_fields =
g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
- if (msg->body) {
- g_free (msg->body);
- msg->body = NULL;
- }
- msg->body_size = 0;
-
return RTSP_OK;
}
RTSPResult
-rtsp_message_new_response (RTSPStatusCode code, gchar * reason,
- RTSPMessage * request, RTSPMessage ** msg)
+rtsp_message_new_response (RTSPMessage ** msg, RTSPStatusCode code,
+ gchar * reason, RTSPMessage * request)
{
RTSPMessage *newmsg;
- if (msg == NULL || reason == NULL || request == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (reason != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (request != NULL, RTSP_EINVAL);
newmsg = g_new0 (RTSPMessage, 1);
*msg = newmsg;
- return rtsp_message_init_response (code, reason, request, newmsg);
+ return rtsp_message_init_response (newmsg, code, reason, request);
}
RTSPResult
-rtsp_message_init_response (RTSPStatusCode code, gchar * reason,
- RTSPMessage * request, RTSPMessage * msg)
+rtsp_message_init_response (RTSPMessage * msg, RTSPStatusCode code,
+ gchar * reason, RTSPMessage * request)
{
- if (reason == NULL || msg == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (reason != NULL, RTSP_EINVAL);
+
+ rtsp_message_unset (msg);
msg->type = RTSP_MESSAGE_RESPONSE;
msg->type_data.response.code = code;
- g_free (msg->type_data.response.reason);
msg->type_data.response.reason = g_strdup (reason);
-
- if (msg->hdr_fields != NULL)
- g_hash_table_destroy (msg->hdr_fields);
msg->hdr_fields =
g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
- if (msg->body) {
- g_free (msg->body);
- msg->body = NULL;
- }
- msg->body_size = 0;
-
if (request) {
/* FIXME copy headers */
}
@@ -106,10 +91,11 @@ rtsp_message_init_response (RTSPStatusCode code, gchar * reason,
}
RTSPResult
-rtsp_message_init_data (gint channel, RTSPMessage * msg)
+rtsp_message_init_data (RTSPMessage * msg, gint channel)
{
- if (msg == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+
+ rtsp_message_unset (msg);
msg->type = RTSP_MESSAGE_DATA;
msg->type_data.data.channel = channel;
@@ -117,13 +103,51 @@ rtsp_message_init_data (gint channel, RTSPMessage * msg)
return RTSP_OK;
}
+RTSPResult
+rtsp_message_unset (RTSPMessage * msg)
+{
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+
+ msg->type = RTSP_MESSAGE_INVALID;
+ msg->type_data.request.method = RTSP_INVALID;
+ g_free (msg->type_data.request.uri);
+ msg->type_data.request.uri = NULL;
+
+ msg->type_data.response.code = RTSP_STS_INVALID;
+ g_free (msg->type_data.response.reason);
+ msg->type_data.response.reason = NULL;
+
+ if (msg->hdr_fields != NULL)
+ g_hash_table_destroy (msg->hdr_fields);
+ msg->hdr_fields = NULL;
+
+ g_free (msg->body);
+ msg->body = NULL;
+ msg->body_size = 0;
+
+ return RTSP_OK;
+}
+
+RTSPResult
+rtsp_message_free (RTSPMessage * msg)
+{
+ RTSPResult res;
+
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+
+ res = rtsp_message_unset (msg);
+ if (res == RTSP_OK)
+ g_free (msg);
+
+ return res;
+}
RTSPResult
rtsp_message_add_header (RTSPMessage * msg, RTSPHeaderField field,
gchar * value)
{
- if (msg == NULL || value == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (value != NULL, RTSP_EINVAL);
g_hash_table_insert (msg->hdr_fields, GINT_TO_POINTER (field),
g_strdup (value));
@@ -134,8 +158,7 @@ rtsp_message_add_header (RTSPMessage * msg, RTSPHeaderField field,
RTSPResult
rtsp_message_remove_header (RTSPMessage * msg, RTSPHeaderField field)
{
- if (msg == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
g_hash_table_remove (msg->hdr_fields, GINT_TO_POINTER (field));
@@ -148,8 +171,8 @@ rtsp_message_get_header (RTSPMessage * msg, RTSPHeaderField field,
{
gchar *val;
- if (msg == NULL || value == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (value != NULL, RTSP_EINVAL);
val = g_hash_table_lookup (msg->hdr_fields, GINT_TO_POINTER (field));
if (val == NULL)
@@ -163,8 +186,7 @@ rtsp_message_get_header (RTSPMessage * msg, RTSPHeaderField field,
RTSPResult
rtsp_message_set_body (RTSPMessage * msg, guint8 * data, guint size)
{
- if (msg == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
return rtsp_message_take_body (msg, g_memdup (data, size), size);
}
@@ -172,8 +194,7 @@ rtsp_message_set_body (RTSPMessage * msg, guint8 * data, guint size)
RTSPResult
rtsp_message_take_body (RTSPMessage * msg, guint8 * data, guint size)
{
- if (msg == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
if (msg->body)
g_free (msg->body);
@@ -187,8 +208,9 @@ rtsp_message_take_body (RTSPMessage * msg, guint8 * data, guint size)
RTSPResult
rtsp_message_get_body (RTSPMessage * msg, guint8 ** data, guint * size)
{
- if (msg == NULL || data == NULL || size == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (data != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (size != NULL, RTSP_EINVAL);
*data = msg->body;
*size = msg->body_size;
@@ -199,8 +221,9 @@ rtsp_message_get_body (RTSPMessage * msg, guint8 ** data, guint * size)
RTSPResult
rtsp_message_steal_body (RTSPMessage * msg, guint8 ** data, guint * size)
{
- if (msg == NULL || data == NULL || size == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (data != NULL, RTSP_EINVAL);
+ g_return_val_if_fail (size != NULL, RTSP_EINVAL);
*data = msg->body;
*size = msg->body_size;
@@ -257,8 +280,7 @@ rtsp_message_dump (RTSPMessage * msg)
guint8 *data;
guint size;
- if (msg == NULL)
- return RTSP_EINVAL;
+ g_return_val_if_fail (msg != NULL, RTSP_EINVAL);
if (msg->type == RTSP_MESSAGE_REQUEST) {
g_print ("request message %p\n", msg);