From a437e9f0edd49646c2fe36162f77575e219b7efa Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 18 Sep 2006 17:37:46 +0000 Subject: 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. --- gst/rtsp/rtspmessage.c | 132 ++++++++++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 55 deletions(-) (limited to 'gst/rtsp/rtspmessage.c') 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); -- cgit