UniMRCP  1.7.0
mrcp_server.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_H
18 #define MRCP_SERVER_H
19 
20 /**
21  * @file mrcp_server.h
22  * @brief MRCP Server
23  */
24 
25 #include "mrcp_server_types.h"
26 #include "mrcp_engine_iface.h"
27 #include "mpf_rtp_descriptor.h"
28 #include "apt_task.h"
29 
31 
32 /**
33  * Create MRCP server instance.
34  * @return the created server instance
35  */
37 
38 /**
39  * Start message processing loop.
40  * @param server the MRCP server to start
41  * @return the created server instance
42  */
44 
45 /**
46  * Take server offline.
47  * @param server the MRCP server to take offline
48  */
50 
51 /**
52  * Bring server online.
53  * @param server the MRCP server to bring online
54  */
56 
57 /**
58  * Shutdown message processing loop.
59  * @param server the MRCP server to shutdown
60  */
62 
63 /**
64  * Destroy MRCP server.
65  * @param server the MRCP server to destroy
66  */
68 
69 
70 /**
71  * Register MRCP resource factory.
72  * @param server the MRCP server to set resource factory for
73  * @param resource_factory the resource factory to set
74  */
76  mrcp_server_t *server,
77  mrcp_resource_factory_t *resource_factory);
78 
79 /**
80  * Register MRCP engine.
81  * @param server the MRCP server to set engine for
82  * @param engine the engine to set
83  */
85  mrcp_server_t *server,
86  mrcp_engine_t *engine);
87 
88 /**
89  * Register codec manager.
90  * @param server the MRCP server to set codec manager for
91  * @param codec_manager the codec manager to set
92  */
94 
95 /**
96  * Get registered codec manager.
97  * @param server the MRCP server to get codec manager from
98  */
100 
101 /**
102  * Register media engine.
103  * @param server the MRCP server to set media engine for
104  * @param media_engine the media engine to set
105  */
107  mrcp_server_t *server,
108  mpf_engine_t *media_engine);
109 
110 /**
111  * Register RTP termination factory.
112  * @param server the MRCP server to set termination factory for
113  * @param rtp_termination_factory the termination factory
114  * @param name the name of the factory
115  */
117  mrcp_server_t *server,
118  mpf_termination_factory_t *rtp_termination_factory,
119  const char *name);
120 
121 /**
122  * Register RTP settings.
123  * @param server the MRCP server to set RTP settings for
124  * @param rtp_settings the settings to set
125  * @param name the name of the settings
126  */
128  mrcp_server_t *server,
129  mpf_rtp_settings_t *rtp_settings,
130  const char *name);
131 
132 /**
133  * Register MRCP signaling agent.
134  * @param server the MRCP server to set signaling agent for
135  * @param signaling_agent the signaling agent to set
136  */
138  mrcp_server_t *server,
139  mrcp_sig_agent_t *signaling_agent);
140 
141 /**
142  * Register MRCP connection agent (MRCPv2 only).
143  * @param server the MRCP server to set connection agent for
144  * @param connection_agent the connection agent to set
145  */
147  mrcp_server_t *server,
148  mrcp_connection_agent_t *connection_agent);
149 
150 /** Create MRCP profile */
152  const char *id,
153  mrcp_version_e mrcp_version,
154  mrcp_resource_factory_t *resource_factory,
155  mrcp_sig_agent_t *signaling_agent,
156  mrcp_connection_agent_t *connection_agent,
157  mpf_engine_t *media_engine,
158  mpf_termination_factory_t *rtp_factory,
159  mpf_rtp_settings_t *rtp_settings,
160  apr_pool_t *pool);
161 
162 /**
163  * Register MRCP profile.
164  * @param server the MRCP server to set profile for
165  * @param profile the profile to set
166  * @param resource_engine_map the map of resource ids and engine settings (resource id -> mrcp_engine_settings_t*)
167  */
169  mrcp_server_t *server,
170  mrcp_server_profile_t *profile,
171  apr_hash_t *resource_engine_map);
172 
173 /**
174  * Load MRCP engine as a plugin.
175  * @param server the MRCP server to use
176  * @param id the identifier of the plugin
177  * @param path the path to the plugin to load
178  * @param config the config of the engine
179  */
181  mrcp_server_t *server,
182  const char *id,
183  const char *path,
184  mrcp_engine_config_t *config);
185 
186 /**
187  * Get memory pool.
188  * @param server the MRCP server to get memory pool from
189  */
190 MRCP_DECLARE(apr_pool_t*) mrcp_server_memory_pool_get(const mrcp_server_t *server);
191 
192 /**
193 * Get MRCP engine by name.
194 * @param server the MRCP server to get media engine from
195 * @param name the name of the media engine to lookup
196 */
197 MRCP_DECLARE(mrcp_engine_t*) mrcp_server_engine_get(const mrcp_server_t *server, const char *name);
198 
199 /**
200  * Get media engine by name.
201  * @param server the MRCP server to get media engine from
202  * @param name the name of the media engine to lookup
203  */
204 MRCP_DECLARE(mpf_engine_t*) mrcp_server_media_engine_get(const mrcp_server_t *server, const char *name);
205 
206 /**
207  * Get RTP termination factory by name.
208  * @param server the MRCP server to get from
209  * @param name the name to lookup
210  */
212 
213 /**
214  * Get RTP settings by name
215  * @param server the MRCP server to get from
216  * @param name the name to lookup
217  */
219 
220 /**
221  * Get signaling agent by name.
222  * @param server the MRCP server to get from
223  * @param name the name to lookup
224  */
226 
227 /**
228  * Get connection agent by name.
229  * @param server the MRCP server to get from
230  * @param name the name to lookup
231  */
233 
234 /**
235  * Get profile by name.
236  * @param server the MRCP client to get from
237  * @param name the name to lookup
238  */
240 
242 
243 #endif /* MRCP_SERVER_H */
#define MRCP_DECLARE(type)
Definition: mrcp.h:40
mrcp_sig_agent_t * mrcp_server_signaling_agent_get(const mrcp_server_t *server, const char *name)
apt_bool_t mrcp_server_resource_factory_register(mrcp_server_t *server, mrcp_resource_factory_t *resource_factory)
struct mrcp_connection_agent_t mrcp_connection_agent_t
Definition: mrcp_connection_types.h:42
mrcp_engine_t * mrcp_server_engine_get(const mrcp_server_t *server, const char *name)
struct apt_dir_layout_t apt_dir_layout_t
Definition: apt_dir_layout.h:38
apt_bool_t mrcp_server_signaling_agent_register(mrcp_server_t *server, mrcp_sig_agent_t *signaling_agent)
Definition: mpf_rtp_descriptor.h:128
MRCP Engine User Interface (typically user is an MRCP server)
apt_bool_t mrcp_server_codec_manager_register(mrcp_server_t *server, mpf_codec_manager_t *codec_manager)
#define APT_END_EXTERN_C
Definition: apt.h:38
apt_bool_t mrcp_server_rtp_settings_register(mrcp_server_t *server, mpf_rtp_settings_t *rtp_settings, const char *name)
apt_bool_t mrcp_server_engine_register(mrcp_server_t *server, mrcp_engine_t *engine)
Definition: mrcp_server_session.h:116
int apt_bool_t
Definition: apt.h:57
mrcp_server_profile_t * mrcp_server_profile_get(const mrcp_server_t *server, const char *name)
apt_bool_t mrcp_server_start(mrcp_server_t *server)
apt_bool_t mrcp_server_online(mrcp_server_t *server)
mrcp_version_e
Definition: mrcp_types.h:30
mrcp_server_profile_t * mrcp_server_profile_create(const char *id, mrcp_version_e mrcp_version, mrcp_resource_factory_t *resource_factory, mrcp_sig_agent_t *signaling_agent, mrcp_connection_agent_t *connection_agent, mpf_engine_t *media_engine, mpf_termination_factory_t *rtp_factory, mpf_rtp_settings_t *rtp_settings, apr_pool_t *pool)
typedefAPT_BEGIN_EXTERN_C struct mpf_engine_t mpf_engine_t
Definition: mpf_types.h:30
struct mrcp_resource_factory_t mrcp_resource_factory_t
Definition: mrcp_types.h:76
#define APT_BEGIN_EXTERN_C
Definition: apt.h:36
Definition: mpf_termination_factory.h:30
apr_pool_t * mrcp_server_memory_pool_get(const mrcp_server_t *server)
apt_bool_t mrcp_server_profile_register(mrcp_server_t *server, mrcp_server_profile_t *profile, apr_hash_t *resource_engine_map)
MRCP Server Types.
apt_bool_t mrcp_server_destroy(mrcp_server_t *server)
apt_bool_t mrcp_server_connection_agent_register(mrcp_server_t *server, mrcp_connection_agent_t *connection_agent)
mpf_termination_factory_t * mrcp_server_rtp_factory_get(const mrcp_server_t *server, const char *name)
Definition: mrcp_engine_types.h:150
apt_bool_t mrcp_server_media_engine_register(mrcp_server_t *server, mpf_engine_t *media_engine)
Definition: mrcp_sig_agent.h:52
const mpf_codec_manager_t * mrcp_server_codec_manager_get(const mrcp_server_t *server)
Thread Execution Abstraction.
mpf_engine_t * mrcp_server_media_engine_get(const mrcp_server_t *server, const char *name)
mpf_rtp_settings_t * mrcp_server_rtp_settings_get(const mrcp_server_t *server, const char *name)
mrcp_connection_agent_t * mrcp_server_connection_agent_get(const mrcp_server_t *server, const char *name)
apt_bool_t mrcp_server_shutdown(mrcp_server_t *server)
typedefAPT_BEGIN_EXTERN_C struct mrcp_server_t mrcp_server_t
Definition: mrcp_server_types.h:32
APT_BEGIN_EXTERN_C mrcp_server_t * mrcp_server_create(apt_dir_layout_t *dir_layout)
Definition: mrcp_engine_types.h:119
apt_bool_t mrcp_server_offline(mrcp_server_t *server)
MPF RTP Stream Descriptor.
struct mpf_codec_manager_t mpf_codec_manager_t
Definition: mpf_types.h:39
mrcp_engine_t * mrcp_server_engine_load(mrcp_server_t *server, const char *id, const char *path, mrcp_engine_config_t *config)
apt_bool_t mrcp_server_rtp_factory_register(mrcp_server_t *server, mpf_termination_factory_t *rtp_termination_factory, const char *name)