diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2006-09-18 17:37:46 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2006-09-18 17:37:46 +0000 |
commit | a437e9f0edd49646c2fe36162f77575e219b7efa (patch) | |
tree | b028fe57793da3d6545d3892021dc08c0a790b13 /gst/rtsp/rtspmessage.c | |
parent | ee58147b3d3f135f7a1c8c80f38bd2b5767d524f (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.c | 132 |
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); |