00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MRCP_HEADER_H
00020 #define MRCP_HEADER_H
00021
00022
00023
00024
00025
00026
00027 #include "mrcp_header_accessor.h"
00028
00029 APT_BEGIN_EXTERN_C
00030
00031
00032
00033
00034
00035 #define TRANSPARENT_HEADER_FIELDS_SUPPORT
00036
00037
00038 typedef struct mrcp_message_header_t mrcp_message_header_t;
00039
00040 typedef struct mrcp_channel_id mrcp_channel_id;
00041
00042
00043
00044 struct mrcp_message_header_t {
00045
00046 mrcp_header_accessor_t generic_header_accessor;
00047
00048 mrcp_header_accessor_t resource_header_accessor;
00049
00050
00051 apt_header_section_t header_section;
00052 };
00053
00054
00055 struct mrcp_channel_id {
00056
00057 apt_str_t session_id;
00058
00059 apt_str_t resource_name;
00060 };
00061
00062
00063
00064 static APR_INLINE void mrcp_message_header_init(mrcp_message_header_t *header)
00065 {
00066 mrcp_header_accessor_init(&header->generic_header_accessor);
00067 mrcp_header_accessor_init(&header->resource_header_accessor);
00068 apt_header_section_init(&header->header_section);
00069 }
00070
00071
00072 MRCP_DECLARE(apt_bool_t) mrcp_message_header_data_alloc(
00073 mrcp_message_header_t *header,
00074 const mrcp_header_vtable_t *generic_header_vtable,
00075 const mrcp_header_vtable_t *resource_header_vtable,
00076 apr_pool_t *pool);
00077
00078
00079 MRCP_DECLARE(mrcp_message_header_t*) mrcp_message_header_create(
00080 const mrcp_header_vtable_t *generic_header_vtable,
00081 const mrcp_header_vtable_t *resource_header_vtable,
00082 apr_pool_t *pool);
00083
00084
00085 static APR_INLINE void mrcp_message_header_destroy(mrcp_message_header_t *header)
00086 {
00087 mrcp_header_destroy(&header->generic_header_accessor);
00088 mrcp_header_destroy(&header->resource_header_accessor);
00089 }
00090
00091
00092 MRCP_DECLARE(apt_bool_t) mrcp_header_field_add(mrcp_message_header_t *header, apt_header_field_t *header_field, apr_pool_t *pool);
00093
00094
00095
00096 MRCP_DECLARE(apt_bool_t) mrcp_header_fields_set(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, apr_pool_t *pool);
00097
00098
00099 MRCP_DECLARE(apt_bool_t) mrcp_header_fields_get(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, const mrcp_message_header_t *mask_header, apr_pool_t *pool);
00100
00101
00102 MRCP_DECLARE(apt_bool_t) mrcp_header_fields_inherit(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, apr_pool_t *pool);
00103
00104
00105 MRCP_DECLARE(apt_bool_t) mrcp_header_fields_parse(mrcp_message_header_t *header, apr_pool_t *pool);
00106
00107
00108
00109 MRCP_DECLARE(void) mrcp_channel_id_init(mrcp_channel_id *channel_id);
00110
00111
00112 MRCP_DECLARE(apt_bool_t) mrcp_channel_id_parse(mrcp_channel_id *channel_id, mrcp_message_header_t *header, apr_pool_t *pool);
00113
00114
00115 MRCP_DECLARE(apt_bool_t) mrcp_channel_id_generate(mrcp_channel_id *channel_id, apt_text_stream_t *text_stream);
00116
00117
00118
00119 APT_END_EXTERN_C
00120
00121 #endif