UniMRCP  1.7.0
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  /** Last offer received */
103  /** Last answer sent */
105 
106  /** MPF task message, which construction is in progress */
108 
109  /** Session state */
111  /** Number of in-progress sub requests */
112  apr_size_t subrequest_count;
113 };
114 
115 /** MRCP server profile */
117  /** Identifier of the profile */
118  const char *id;
119  /** MRCP version */
121  /** Table of engines (mrcp_engine_settings_t*) */
122  apr_hash_t *engine_table;
123  /** MRCP resource factory */
125  /** Media processing engine */
127  /** RTP termination factory */
129  /** RTP settings */
131  /** Signaling agent */
133  /** Connection agent */
135 };
136 
137 /** Create server session */
139 
140 /** Process signaling message */
142 /** Process MPF message */
144 
145 /** Process channel modify event */
147 /** Process channel remove event */
149 /** Process channel message receive */
151 /** Process connection disconnect event */
153 
154 /** Process channel open event */
156 /** Process channel close event */
158 /** Process message receive event */
160 
161 /** Get session by channel */
163 
165 
166 #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:128
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:110
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:120
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:100
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:116
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:122
struct mrcp_resource_factory_t mrcp_resource_factory_t
Definition: mrcp_types.h:76
mrcp_session_descriptor_t * last_answer
Definition: mrcp_server_session.h:104
#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:130
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_session_descriptor_t * last_offer
Definition: mrcp_server_session.h:102
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:126
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:50
mrcp_resource_factory_t * resource_factory
Definition: mrcp_server_session.h:124
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:134
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:132
Definition: mrcp_server_session.h:69
mpf_task_msg_t * mpf_task_msg
Definition: mrcp_server_session.h:107
List of Opaque void* Objects.
mrcp_session_descriptor_t * answer
Definition: mrcp_server_session.h:99
const char * id
Definition: mrcp_server_session.h:118
Abstract MRCP Session.
Definition: mrcp_message.h:37
apr_size_t subrequest_count
Definition: mrcp_server_session.h:112
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