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
mrcpv2-transport
include
mrcp_connection.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_connection.h 2170 2014-09-09 05:19:48Z achaloyan@gmail.com $
17
*/
18
19
#ifndef MRCP_CONNECTION_H
20
#define MRCP_CONNECTION_H
21
22
/**
23
* @file mrcp_connection.h
24
* @brief MRCP Connection
25
*/
26
27
#include <apr_poll.h>
28
#include <apr_hash.h>
29
#ifdef WIN32
30
#pragma warning(disable: 4127)
31
#endif
32
#include <apr_ring.h>
33
#include "
mrcp_connection_types.h
"
34
#include "
mrcp_stream.h
"
35
36
APT_BEGIN_EXTERN_C
37
38
/** Size of the buffer used for MRCP rx/tx stream */
39
#define MRCP_STREAM_BUFFER_SIZE 1024
40
41
/** MRCPv2 connection */
42
struct
mrcp_connection_t
{
43
/** Ring entry */
44
APR_RING_ENTRY
(
mrcp_connection_t
) link;
45
46
/** Memory pool */
47
apr_pool_t *
pool
;
48
49
/** Accepted/Connected socket */
50
apr_socket_t *
sock
;
51
/** Socket poll descriptor */
52
apr_pollfd_t
sock_pfd
;
53
/** Local sockaddr */
54
apr_sockaddr_t *
l_sockaddr
;
55
/** Remote sockaddr */
56
apr_sockaddr_t *
r_sockaddr
;
57
/** Remote IP */
58
apt_str_t
remote_ip
;
59
/** String identifier used for traces */
60
const
char
*
id
;
61
/** Transparently dump whatever received/sent on transport layer,
62
if verbose is set to TRUE (default) */
63
apt_bool_t
verbose
;
64
65
/** Reference count */
66
apr_size_t
access_count
;
67
/** Opaque agent */
68
void
*
agent
;
69
70
/** Table of control channels */
71
apr_hash_t *
channel_table
;
72
73
/** Rx buffer */
74
char
*
rx_buffer
;
75
/** Rx buffer size */
76
apr_size_t
rx_buffer_size
;
77
/** Rx stream */
78
apt_text_stream_t
rx_stream
;
79
/** MRCP parser to parser MRCP messages out of rx stream */
80
mrcp_parser_t
*
parser
;
81
82
/** Tx buffer */
83
char
*
tx_buffer
;
84
/** Tx buffer size */
85
apr_size_t
tx_buffer_size
;
86
/** MRCP generator to generate MRCP messages into tx stream */
87
mrcp_generator_t
*
generator
;
88
};
89
90
/** Create MRCP connection. */
91
mrcp_connection_t
*
mrcp_connection_create
(
void
);
92
93
/** Destroy MRCP connection. */
94
void
mrcp_connection_destroy
(
mrcp_connection_t
*connection);
95
96
/** Add Control Channel to MRCP connection. */
97
apt_bool_t
mrcp_connection_channel_add
(
mrcp_connection_t
*connection,
mrcp_control_channel_t
*channel);
98
99
/** Find Control Channel by Channel Identifier. */
100
mrcp_control_channel_t
*
mrcp_connection_channel_find
(
const
mrcp_connection_t
*connection,
const
apt_str_t
*identifier);
101
102
/** Remove Control Channel from MRCP connection. */
103
apt_bool_t
mrcp_connection_channel_remove
(
mrcp_connection_t
*connection,
mrcp_control_channel_t
*channel);
104
105
/** Raise disconnect event for each channel from the specified connection. */
106
apt_bool_t
mrcp_connection_disconnect_raise
(
mrcp_connection_t
*connection,
const
mrcp_connection_event_vtable_t
*vtable);
107
108
APT_END_EXTERN_C
109
110
#endif
/* MRCP_CONNECTION_H */
Generated on Mon Feb 2 2015 19:41:39 for UniMRCP by
1.8.3.1