UniMRCP  1.5.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
mrcp_client_session.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008-2015 Arsen Chaloyan
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MRCP_CLIENT_SESSION_H
18 #define MRCP_CLIENT_SESSION_H
19 
20 /**
21  * @file mrcp_client_session.h
22  * @brief MRCP Client Session
23  */
24 
25 #include "mrcp_client_types.h"
26 #include "mrcp_application.h"
27 #include "mrcp_session.h"
28 #include "mpf_engine.h"
29 #include "apt_task_msg.h"
30 #include "apt_obj_list.h"
31 
33 
34 /** RTP termination slot declaration */
36 
37 /** MRCP client session declaration */
39 
40 /** Client session states */
41 typedef enum {
43  SESSION_STATE_GENERATING_OFFER,
44  SESSION_STATE_PROCESSING_ANSWER,
46  SESSION_STATE_DISCOVERING
48 
49 /** MRCP client session */
51  /** Session base */
53  /** Application session belongs to */
55  /** External object associated with session */
56  void *app_obj;
57  /** Profile to use */
59 
60  /** Media context */
62  /** Codec manager */
64 
65  /** RTP termination array (mrcp_termination_slot_t) */
66  apr_array_header_t *terminations;
67  /** MRCP control channel array (mrcp_channel_t*) */
68  apr_array_header_t *channels;
69 
70  /** Indicates whether session is already added to session table */
72 
73  /** In-progress offer */
75  /** In-progress answer */
77 
78  /** MRCP application active request */
80  /** MRCP application request queue */
82 
83  /** MPF task message, which construction is in progress */
85 
86  /** Session state */
88  /** Status code of the app response to be generated */
90  /** Number of in-progress sub requests */
91  apr_size_t subrequest_count;
92  /** True, if server unexpectedly closed session/connection */
94 };
95 
96 /** MRCP channel */
98  /** Memory pool */
99  apr_pool_t *pool;
100  /** External object associated with channel */
101  void *obj;
102  /** MRCP resource */
104  /** MRCP session entire channel belongs to */
106  /** MRCP control channel */
108  /** Media termination */
110  /** Associated RTP termination slot */
112 
113  /** waiting state of control channel */
115  /** waiting state of media termination */
117 };
118 
119 /** RTP termination slot */
121  /** waiting state */
123  /** RTP termination */
125  /** RTP termination descriptor */
127  /** Associated MRCP channel */
129  /** media descriptor id (index of media in session descriptor) */
130  apr_size_t id;
131 };
132 
133 /** MRCP client profile */
135  /** Unique profile name */
136  const char *name;
137  /** Arbitrary tag set/used by user application */
138  const char *tag;
139  /** MRCP version */
141  /** MRCP resource factory */
143  /** Media engine factory */
145  /** RTP termination factory */
147  /** Signaling agent factory */
149  /** Connection agent factory */
151  /** Signaling settings */
153  /** RTP settings */
155 };
156 
157 /** MRCP application */
159  /** External object associated with the application */
160  void *obj;
161  /** Application message handler */
163  /** MRCP client */
165  /** Application task message pool */
167 };
168 
169 /** Create channel */
171  mrcp_client_session_t *session,
172  mrcp_resource_t *resource,
173  mpf_termination_t *termination,
174  mpf_rtp_termination_descriptor_t *rtp_descriptor,
175  void *obj);
176 
177 /** Create signaling app_message_t request */
179 /** Create signaling app_message_t event */
181 /** Create control app_message_t */
183 
184 /** Process application message */
186 /** Process MPF message */
188 
189 /** Process session answer */
191 /** Process session termination response */
193 /** Process session control response */
195 /** Process resource discovery response */
197 /** Process session termination event */
199 
200 /** Process channel add event */
202 /** Process channel modify event */
204 /** Process channel remove event */
206 /** Process message receive event */
208 /** Process disconnect event */
210 
212 
213 #endif /* MRCP_CLIENT_SESSION_H */
void * obj
Definition: mrcp_client_session.h:160
Definition: mrcp_client_session.h:50
apt_bool_t mrcp_client_on_channel_add(mrcp_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status)
apr_size_t subrequest_count
Definition: mrcp_client_session.h:91
Definition: mrcp_session.h:49
mrcp_client_session_state_e state
Definition: mrcp_client_session.h:87
typedefAPT_BEGIN_EXTERN_C struct mrcp_client_t mrcp_client_t
Definition: mrcp_client_types.h:32
mrcp_resource_factory_t * resource_factory
Definition: mrcp_client_session.h:142
Definition: mrcp_client_session.h:134
const mrcp_app_message_t * active_request
Definition: mrcp_client_session.h:79
apt_bool_t mrcp_client_on_disconnect(mrcp_channel_t *channel)
mrcp_session_t base
Definition: mrcp_client_session.h:52
Definition: mpf_termination.h:51
Definition: mpf_rtp_descriptor.h:128
Definition: mrcp_connection_types.h:65
const char * tag
Definition: mrcp_client_session.h:138
Definition: mrcp_client_session.h:97
const char * name
Definition: mrcp_client_session.h:136
mpf_termination_t * termination
Definition: mrcp_client_session.h:109
mrcp_channel_t * mrcp_client_channel_create(mrcp_client_session_t *session, mrcp_resource_t *resource, mpf_termination_t *termination, mpf_rtp_termination_descriptor_t *rtp_descriptor, void *obj)
rtp_termination_slot_t * rtp_termination_slot
Definition: mrcp_client_session.h:111
mrcp_sa_factory_t * sa_factory
Definition: mrcp_client_session.h:148
typedefAPT_BEGIN_EXTERN_C struct apt_obj_list_t apt_obj_list_t
Definition: apt_obj_list.h:31
apt_bool_t mrcp_client_on_message_receive(mrcp_channel_t *channel, mrcp_message_t *message)
mrcp_app_message_handler_f handler
Definition: mrcp_client_session.h:162
#define APT_END_EXTERN_C
Definition: apt.h:38
MRCP User Level Application Interface.
apt_bool_t mrcp_client_session_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor)
mrcp_sig_settings_t * signaling_settings
Definition: mrcp_client_session.h:152
int apt_bool_t
Definition: apt.h:57
mpf_rtp_settings_t * rtp_settings
Definition: mrcp_client_session.h:154
Definition: mrcp_control_descriptor.h:78
mrcp_channel_t * channel
Definition: mrcp_client_session.h:128
apt_bool_t mrcp_client_session_terminate_event_process(mrcp_client_session_t *session)
Definition: mrcp_server_session.h:70
struct mpf_engine_factory_t mpf_engine_factory_t
Definition: mpf_types.h:33
mrcp_session_descriptor_t * answer
Definition: mrcp_client_session.h:76
mrcp_session_t * session
Definition: mrcp_client_session.h:105
apt_bool_t disconnected
Definition: mrcp_client_session.h:93
Definition: mrcp_application.h:94
mrcp_version_e
Definition: mrcp_types.h:30
mpf_engine_factory_t * mpf_factory
Definition: mrcp_client_session.h:144
Definition: mrcp_sig_agent.h:33
Media Processing Framework Engine.
APT_BEGIN_EXTERN_C typedef apt_task_msg_t mpf_task_msg_t
Definition: mpf_engine.h:31
apr_array_header_t * channels
Definition: mrcp_client_session.h:68
apr_size_t id
Definition: mrcp_client_session.h:130
mpf_termination_t * termination
Definition: mrcp_client_session.h:124
Definition: mpf_rtp_descriptor.h:85
struct mrcp_resource_factory_t mrcp_resource_factory_t
Definition: mrcp_types.h:76
mrcp_client_profile_t * profile
Definition: mrcp_client_session.h:58
Task Message Base Definition.
apt_bool_t waiting_for_channel
Definition: mrcp_client_session.h:114
apt_bool_t mrcp_client_session_terminate_response_process(mrcp_client_session_t *session)
Definition: mrcp_client_session.h:120
mrcp_client_t * client
Definition: mrcp_client_session.h:164
apt_bool_t mrcp_client_on_channel_modify(mrcp_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status)
#define APT_BEGIN_EXTERN_C
Definition: apt.h:36
mrcp_session_descriptor_t * offer
Definition: mrcp_client_session.h:74
apt_bool_t mrcp_client_session_control_response_process(mrcp_client_session_t *session, mrcp_message_t *message)
mrcp_control_channel_t * control_channel
Definition: mrcp_client_session.h:107
Definition: mpf_termination_factory.h:30
Definition: mpf_message.h:83
mrcp_app_message_t * mrcp_client_app_signaling_event_create(mrcp_sig_event_e event_id, apr_pool_t *pool)
mrcp_sig_command_e
Definition: mrcp_application.h:60
mrcp_ca_factory_t * ca_factory
Definition: mrcp_client_session.h:150
apt_bool_t waiting_for_termination
Definition: mrcp_client_session.h:116
mrcp_sig_status_code_e
Definition: mrcp_application.h:51
mrcp_resource_t * resource
Definition: mrcp_client_session.h:103
struct mrcp_ca_factory_t mrcp_ca_factory_t
Definition: mrcp_connection_types.h:45
apr_array_header_t * terminations
Definition: mrcp_client_session.h:66
apr_pool_t * pool
Definition: mrcp_client_session.h:99
void * obj
Definition: mrcp_client_session.h:101
struct mpf_context_t mpf_context_t
Definition: mpf_types.h:42
mrcp_sig_status_code_e status
Definition: mrcp_client_session.h:89
Definition: mrcp_server_session.h:66
void * app_obj
Definition: mrcp_client_session.h:56
Definition: mrcp_client_session.h:158
mpf_termination_factory_t * rtp_termination_factory
Definition: mrcp_client_session.h:146
apt_bool_t(* mrcp_app_message_handler_f)(const mrcp_app_message_t *app_message)
Definition: mrcp_application.h:41
apt_bool_t registered
Definition: mrcp_client_session.h:71
mrcp_app_message_t * mrcp_client_app_control_message_create(apr_pool_t *pool)
mrcp_client_session_state_e
Definition: mrcp_client_session.h:41
mrcp_application_t * application
Definition: mrcp_client_session.h:54
apt_bool_t waiting
Definition: mrcp_client_session.h:122
apt_bool_t mrcp_client_session_discover_response_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor)
mpf_task_msg_t * mpf_task_msg
Definition: mrcp_client_session.h:84
Definition: mrcp_session_descriptor.h:40
apt_bool_t mrcp_client_on_channel_remove(mrcp_channel_t *channel, apt_bool_t status)
apt_bool_t mrcp_client_app_message_process(mrcp_app_message_t *app_message)
mrcp_version_e mrcp_version
Definition: mrcp_client_session.h:140
MRCP Client Types.
apt_obj_list_t * request_queue
Definition: mrcp_client_session.h:81
struct apt_task_msg_pool_t apt_task_msg_pool_t
Definition: apt_task_msg.h:50
apt_bool_t mrcp_client_mpf_message_process(mpf_message_container_t *mpf_message_container)
mpf_rtp_termination_descriptor_t * descriptor
Definition: mrcp_client_session.h:126
mpf_context_t * context
Definition: mrcp_client_session.h:61
mrcp_app_message_t * mrcp_client_app_signaling_request_create(mrcp_sig_command_e command_id, apr_pool_t *pool)
struct mrcp_sa_factory_t mrcp_sa_factory_t
Definition: mrcp_sig_types.h:36
mrcp_sig_event_e
Definition: mrcp_application.h:69
List of Opaque void* Objects.
struct mpf_codec_manager_t mpf_codec_manager_t
Definition: mpf_types.h:39
Definition: mrcp_resource.h:32
Abstract MRCP Session.
Definition: mrcp_message.h:37
const mpf_codec_manager_t * codec_manager
Definition: mrcp_client_session.h:63
apt_task_msg_pool_t * msg_pool
Definition: mrcp_client_session.h:166