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
apr-toolkit
include
apt_text_message.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: apt_text_message.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $
17
*/
18
19
#ifndef APT_TEXT_MESSAGE_H
20
#define APT_TEXT_MESSAGE_H
21
22
/**
23
* @file apt_text_message.h
24
* @brief Text Message Interface (RFC5322)
25
*/
26
27
#include "
apt_header_field.h
"
28
#include "
apt_text_stream.h
"
29
30
APT_BEGIN_EXTERN_C
31
32
/** Status of text message processing (parsing/generation) */
33
typedef
enum
{
34
APT_MESSAGE_STATUS_COMPLETE,
35
APT_MESSAGE_STATUS_INCOMPLETE,
36
APT_MESSAGE_STATUS_INVALID
37
}
apt_message_status_e
;
38
39
40
/** Opaque text message parser */
41
typedef
struct
apt_message_parser_t
apt_message_parser_t
;
42
/** Vtable of text message parser */
43
typedef
struct
apt_message_parser_vtable_t
apt_message_parser_vtable_t
;
44
45
/** Opaque text message generator */
46
typedef
struct
apt_message_generator_t
apt_message_generator_t
;
47
/** Vtable of text message generator */
48
typedef
struct
apt_message_generator_vtable_t
apt_message_generator_vtable_t
;
49
50
/** Temporary context associated with message and used for its parsing or generation */
51
typedef
struct
apt_message_context_t
apt_message_context_t
;
52
53
/** Create message parser */
54
APT_DECLARE
(
apt_message_parser_t
*)
apt_message_parser_create
(
void
*obj, const
apt_message_parser_vtable_t
*vtable, apr_pool_t *pool);
55
56
/** Parse message by raising corresponding event handlers */
57
APT_DECLARE
(
apt_message_status_e
)
apt_message_parser_run
(
apt_message_parser_t
*parser,
apt_text_stream_t
*stream,
void
**
message
);
58
59
/** Get external object associated with parser */
60
APT_DECLARE
(
void
*)
apt_message_parser_object_get
(
apt_message_parser_t
*parser);
61
62
/** Set verbose mode for the parser */
63
APT_DECLARE
(
void
)
apt_message_parser_verbose_set
(
apt_message_parser_t
*parser,
apt_bool_t
verbose);
64
65
66
/** Create message generator */
67
APT_DECLARE
(
apt_message_generator_t
*)
apt_message_generator_create
(
void
*obj, const
apt_message_generator_vtable_t
*vtable, apr_pool_t *pool);
68
69
/** Generate message */
70
APT_DECLARE
(
apt_message_status_e
)
apt_message_generator_run
(
apt_message_generator_t
*generator,
void
*message,
apt_text_stream_t
*stream);
71
72
/** Get external object associated with generator */
73
APT_DECLARE
(
void
*)
apt_message_generator_object_get
(
apt_message_generator_t
*generator);
74
75
/** Set verbose mode for the parser */
76
APT_DECLARE
(
void
)
apt_message_generator_verbose_set
(
apt_message_generator_t
*generator,
apt_bool_t
verbose);
77
78
79
/** Parse individual header field (name-value pair) */
80
APT_DECLARE
(
apt_header_field_t
*)
apt_header_field_parse
(
apt_text_stream_t
*stream, apr_pool_t *pool);
81
82
/** Generate individual header field (name-value pair) */
83
APT_DECLARE
(
apt_bool_t
)
apt_header_field_generate
(const
apt_header_field_t
*header_field,
apt_text_stream_t
*stream);
84
85
/** Parse header section */
86
APT_DECLARE
(
apt_bool_t
)
apt_header_section_parse
(
apt_header_section_t
*
header
,
apt_text_stream_t
*stream, apr_pool_t *pool);
87
88
/** Generate header section */
89
APT_DECLARE
(
apt_bool_t
)
apt_header_section_generate
(const
apt_header_section_t
*header,
apt_text_stream_t
*stream);
90
91
92
/** Temporary context associated with message and used for its parsing or generation */
93
struct
apt_message_context_t
{
94
/** Context or ptotocol specific message */
95
void
*
message
;
96
/** Header section of the message */
97
apt_header_section_t
*
header
;
98
/** Body or content of the message */
99
apt_str_t
*
body
;
100
};
101
102
/** Vtable of text message parser */
103
struct
apt_message_parser_vtable_t
{
104
/** Start new message parsing by associating corresponding context and reading its start-line if applicable */
105
apt_bool_t
(*
on_start
)(
apt_message_parser_t
*parser,
apt_message_context_t
*context,
apt_text_stream_t
*stream, apr_pool_t *pool);
106
/** Header section handler is invoked when entire header section has been read and parsed into header fields */
107
apt_bool_t
(*
on_header_complete
)(
apt_message_parser_t
*parser,
apt_message_context_t
*context);
108
/** Body handler is invoked when entire body has been read */
109
apt_bool_t
(*
on_body_complete
)(
apt_message_parser_t
*parser,
apt_message_context_t
*context);
110
};
111
112
/** Vtable of text message generator */
113
struct
apt_message_generator_vtable_t
{
114
/** Start message generation by associating corresponding context and generating message start-line if applicable */
115
apt_bool_t
(*
on_start
)(
apt_message_generator_t
*generator,
apt_message_context_t
*context,
apt_text_stream_t
*stream);
116
/** Header section handler is invoked to notify header section has been generated */
117
apt_bool_t
(*
on_header_complete
)(
apt_message_generator_t
*generator,
apt_message_context_t
*context,
apt_text_stream_t
*stream);
118
/** Body handler is invoked to notify body has been generated */
119
apt_bool_t
(*
on_body_complete
)(
apt_message_generator_t
*generator,
apt_message_context_t
*context,
apt_text_stream_t
*stream);
120
};
121
122
123
APT_END_EXTERN_C
124
125
#endif
/* APT_TEXT_MESSAGE_H */
Generated on Mon Feb 2 2015 19:41:38 for UniMRCP by
1.8.3.1