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