UniMRCP  1.7.0
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  /** Optional session attributes */
97 };
98 
99 /** MRCP channel */
101  /** Memory pool */
102  apr_pool_t *pool;
103  /** External object associated with channel */
104  void *obj;
105  /** MRCP resource */
107  /** MRCP session entire channel belongs to */
109  /** MRCP control channel */
111  /** Media termination */
113  /** Associated RTP termination slot */
115 
116  /** waiting state of control channel */
118  /** waiting state of media termination */
120 };
121 
122 /** RTP termination slot */
124  /** waiting state */
126  /** RTP termination */
128  /** RTP termination descriptor */
130  /** Associated MRCP channel */
132  /** media descriptor id (index of media in session descriptor) */
133  apr_size_t id;
134 };
135 
136 /** MRCP client profile */
138  /** Unique profile name */
139  const char *name;
140  /** Arbitrary tag set/used by user application */
141  const char *tag;
142  /** MRCP version */
144  /** MRCP resource factory */
146  /** Media engine factory */
148  /** RTP termination factory */
150  /** Signaling agent factory */
152  /** Connection agent factory */
154  /** Signaling settings */
156  /** RTP settings */
158 };
159 
160 /** MRCP application */
162  /** External object associated with the application */
163  void *obj;
164  /** Application message handler */
166  /** MRCP client */
168  /** Application task message pool */
170 };
171 
172 /** Create channel */
174  mrcp_client_session_t *session,
175  mrcp_resource_t *resource,
176  mpf_termination_t *termination,
177  mpf_rtp_termination_descriptor_t *rtp_descriptor,
178  void *obj);
179 
180 /** Create signaling app_message_t request */
182 /** Create signaling app_message_t event */
184 /** Create control app_message_t */
186 
187 /** Process application message */
189 /** Process MPF message */
191 
192 /** Process session answer */
194 /** Process session termination response */
196 /** Process session control response */
198 /** Process resource discovery response */
200 /** Process session termination event */
202 
203 /** Process channel add event */
205 /** Process channel modify event */
207 /** Process channel remove event */
209 /** Process message receive event */
211 /** Process disconnect event */
213 
215 
216 #endif /* MRCP_CLIENT_SESSION_H */
void * obj
Definition: mrcp_client_session.h:163
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:145
Definition: mrcp_client_session.h:137
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:141
Definition: mrcp_client_session.h:100
const char * name
Definition: mrcp_client_session.h:139
mpf_termination_t * termination
Definition: mrcp_client_session.h:112
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:114
mrcp_sa_factory_t * sa_factory
Definition: mrcp_client_session.h:151
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:165
#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:155
int apt_bool_t
Definition: apt.h:57
mpf_rtp_settings_t * rtp_settings
Definition: mrcp_client_session.h:157
Definition: mrcp_control_descriptor.h:78
mrcp_channel_t * channel
Definition: mrcp_client_session.h:131
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:108
apt_bool_t disconnected
Definition: mrcp_client_session.h:93
Definition: mrcp_application.h:94
mrcp_version_e
Definition: mrcp_types.h:30
Definition: mrcp_session_descriptor.h:42
mpf_engine_factory_t * mpf_factory
Definition: mrcp_client_session.h:147
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:133
mpf_termination_t * termination
Definition: mrcp_client_session.h:127
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:117
apt_bool_t mrcp_client_session_terminate_response_process(mrcp_client_session_t *session)
Definition: mrcp_client_session.h:123
mrcp_client_t * client
Definition: mrcp_client_session.h:167
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:110
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:153
apt_bool_t waiting_for_termination
Definition: mrcp_client_session.h:119
mrcp_sig_status_code_e
Definition: mrcp_application.h:51
mrcp_resource_t * resource
Definition: mrcp_client_session.h:106
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:102
void * obj
Definition: mrcp_client_session.h:104
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:161
mpf_termination_factory_t * rtp_termination_factory
Definition: mrcp_client_session.h:149
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_session_attribs_t * attribs
Definition: mrcp_client_session.h:96
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:125
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:50
apt_bool_t(* mrcp_app_message_handler_f)(const mrcp_app_message_t *app_message)
Definition: mrcp_application.h:41
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:143
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:129
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:169