UniMRCP  1.4.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
mrcp_server_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_SERVER_SESSION_H
18 #define MRCP_SERVER_SESSION_H
19 
20 /**
21  * @file mrcp_server_session.h
22  * @brief MRCP Server Session
23  */
24 
25 #include <apr_hash.h>
26 #include "mrcp_session.h"
27 #include "mpf_engine.h"
28 #include "apt_task.h"
29 #include "apt_obj_list.h"
30 
31 
33 
34 /** Opaque MRCP channel declaration */
36 /** MRCP server session declaration */
38 /** MRCP signaling message declaration */
40 
41 /** Enumeration of signaling task messages */
42 typedef enum {
43  SIGNALING_MESSAGE_OFFER,
44  SIGNALING_MESSAGE_CONTROL,
45  SIGNALING_MESSAGE_TERMINATE,
47 
48 /** MRCP signaling message */
50  /** Signaling message type */
52 
53  /** Session */
55  /** Descriptor */
57 
58  /** Channel */
60  /** MRCP message */
62 };
63 
64 /** Server session states */
65 typedef enum {
66  SESSION_STATE_NONE, /**< initial state */
67  SESSION_STATE_GENERATING_ANSWER, /**< received offer, generating answer now */
68  SESSION_STATE_INITIALIZING, /**< answer is ready, finally initializing channels now */
69  SESSION_STATE_DEACTIVATING, /**< received session termination request, deinitializing channels now */
70  SESSION_STATE_TERMINATING /**< finally terminating session */
72 
73 
74 /** MRCP server session */
76  /** Session base */
78  /** MRCP server */
80  /** MRCP profile */
82 
83  /** Media context */
85 
86  /** Media termination array */
87  apr_array_header_t *terminations;
88  /** MRCP control channel array */
89  apr_array_header_t *channels;
90 
91  /** In-progress signaling request */
93  /** Signaling request queue */
95 
96  /** In-progress offer */
98  /** In-progres answer */
100 
101  /** MPF task message, which construction is in progress */
103 
104  /** Session state */
106  /** Number of in-progress sub requests */
107  apr_size_t subrequest_count;
108 };
109 
110 /** MRCP server profile */
112  /** Identifier of the profile */
113  const char *id;
114  /** MRCP version */
116  /** Table of engines (mrcp_engine_t*) */
117  apr_hash_t *engine_table;
118  /** MRCP resource factory */
120  /** Media processing engine */
122  /** RTP termination factory */
124  /** RTP settings */
126  /** Signaling agent */
128  /** Connection agent */
130 };
131 
132 /** Create server session */
134 
135 /** Process signaling message */
137 /** Process MPF message */
139 
140 /** Process channel modify event */
142 /** Process channel remove event */
144 /** Process channel message receive */
146 /** Process connection disconnect event */
148 
149 /** Process channel open event */
151 /** Process channel close event */
153 /** Process message receive event */
155 
156 /** Get session by channel */
158 
160 
161 #endif /* MRCP_SERVER_SESSION_H */
mpf_context_t * context
Definition: mrcp_server_session.h:84
mpf_termination_factory_t * rtp_termination_factory
Definition: mrcp_server_session.h:123
Definition: mrcp_session.h:49
struct mrcp_connection_agent_t mrcp_connection_agent_t
Definition: mrcp_connection_types.h:42
mrcp_server_session_state_e state
Definition: mrcp_server_session.h:105
apt_bool_t mrcp_server_mpf_message_process(mpf_message_container_t *mpf_message_container)
apt_bool_t mrcp_server_on_engine_channel_open(mrcp_channel_t *channel, apt_bool_t status)
mrcp_version_e mrcp_version
Definition: mrcp_server_session.h:115
Definition: mpf_rtp_descriptor.h:128
mrcp_server_session_t * mrcp_server_session_create(void)
mrcp_server_session_t * session
Definition: mrcp_server_session.h:54
Definition: mrcp_client_session.h:97
mrcp_signaling_message_t * active_request
Definition: mrcp_server_session.h:92
typedefAPT_BEGIN_EXTERN_C struct apt_obj_list_t apt_obj_list_t
Definition: apt_obj_list.h:31
#define APT_END_EXTERN_C
Definition: apt.h:38
mrcp_session_t base
Definition: mrcp_server_session.h:77
Definition: mrcp_server_session.h:111
int apt_bool_t
Definition: apt.h:57
apt_obj_list_t * request_queue
Definition: mrcp_server_session.h:94
Definition: mrcp_control_descriptor.h:78
mrcp_message_t * message
Definition: mrcp_server_session.h:61
Definition: mrcp_server_session.h:75
apr_array_header_t * terminations
Definition: mrcp_server_session.h:87
Definition: mrcp_server_session.h:70
Definition: mrcp_server_session.h:67
mrcp_version_e
Definition: mrcp_types.h:30
Media Processing Framework Engine.
APT_BEGIN_EXTERN_C typedef apt_task_msg_t mpf_task_msg_t
Definition: mpf_engine.h:31
typedefAPT_BEGIN_EXTERN_C struct mpf_engine_t mpf_engine_t
Definition: mpf_types.h:30
apr_hash_t * engine_table
Definition: mrcp_server_session.h:117
struct mrcp_resource_factory_t mrcp_resource_factory_t
Definition: mrcp_types.h:76
#define APT_BEGIN_EXTERN_C
Definition: apt.h:36
mrcp_signaling_message_type_e type
Definition: mrcp_server_session.h:51
Definition: mpf_termination_factory.h:30
Definition: mpf_message.h:83
mpf_rtp_settings_t * rtp_settings
Definition: mrcp_server_session.h:125
Definition: mrcp_server_session.h:49
apt_bool_t mrcp_server_on_channel_modify(mrcp_channel_t *channel, mrcp_control_descriptor_t *answer, apt_bool_t status)
mrcp_channel_t * channel
Definition: mrcp_server_session.h:59
Definition: mrcp_sig_agent.h:52
mrcp_server_session_state_e
Definition: mrcp_server_session.h:65
apt_bool_t mrcp_server_on_engine_channel_message(mrcp_channel_t *channel, mrcp_message_t *message)
Definition: mrcp_server_session.h:68
mrcp_session_descriptor_t * offer
Definition: mrcp_server_session.h:97
struct mpf_context_t mpf_context_t
Definition: mpf_types.h:42
Definition: mrcp_server_session.h:66
mpf_engine_t * media_engine
Definition: mrcp_server_session.h:121
Thread Execution Abstraction.
apt_bool_t mrcp_server_on_disconnect(mrcp_channel_t *channel)
apr_array_header_t * channels
Definition: mrcp_server_session.h:89
mrcp_server_profile_t * profile
Definition: mrcp_server_session.h:81
mrcp_server_t * server
Definition: mrcp_server_session.h:79
Definition: mrcp_session_descriptor.h:40
mrcp_resource_factory_t * resource_factory
Definition: mrcp_server_session.h:119
mrcp_session_t * mrcp_server_channel_session_get(mrcp_channel_t *channel)
apt_bool_t mrcp_server_on_engine_channel_close(mrcp_channel_t *channel)
mrcp_connection_agent_t * connection_agent
Definition: mrcp_server_session.h:129
typedefAPT_BEGIN_EXTERN_C struct mrcp_server_t mrcp_server_t
Definition: mrcp_server_types.h:32
apt_bool_t mrcp_server_on_channel_message(mrcp_channel_t *channel, mrcp_message_t *message)
mrcp_sig_agent_t * signaling_agent
Definition: mrcp_server_session.h:127
Definition: mrcp_server_session.h:69
mpf_task_msg_t * mpf_task_msg
Definition: mrcp_server_session.h:102
List of Opaque void* Objects.
mrcp_session_descriptor_t * answer
Definition: mrcp_server_session.h:99
const char * id
Definition: mrcp_server_session.h:113
Abstract MRCP Session.
Definition: mrcp_message.h:37
apr_size_t subrequest_count
Definition: mrcp_server_session.h:107
mrcp_session_descriptor_t * descriptor
Definition: mrcp_server_session.h:56
apt_bool_t mrcp_server_on_channel_remove(mrcp_channel_t *channel, apt_bool_t status)
apt_bool_t mrcp_server_signaling_message_process(mrcp_signaling_message_t *signaling_message)
mrcp_signaling_message_type_e
Definition: mrcp_server_session.h:42