1 // Copyright Maciej Sobczak 2008-2019.
2 // This file is part of YAMI4.
3 //
4 // YAMI4 is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // YAMI4 is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with YAMI4.  If not, see <http://www.gnu.org/licenses/>.
16 
17 #ifndef YAMICORE_DETAILS_FWD_H_INCLUDED
18 #define YAMICORE_DETAILS_FWD_H_INCLUDED
19 
20 namespace yami
21 {
22 
23 namespace details
24 {
25 
26 class allocator;
27 struct entry;
28 
29 class fsm_common;
30 class get_serialize_buffer_size_fsm;
31 class serialize_fsm;
32 class deserialize_fsm;
33 
34 struct outgoing_frame;
35 struct incoming_frame;
36 struct incoming_message_frame_list;
37 
38 class channel;
39 class channel_holder;
40 class listener;
41 class channel_group;
42 class mutex;
43 struct options;
44 
45 enum protocol
46 {
47     proto_tcp,
48     proto_udp,
49     proto_unix,
50     proto_file
51 #ifdef YAMI4_WITH_QNX
52     , proto_qnx
53 #endif // YAMI4_WITH_QNX
54 #ifdef YAMI4_WITH_OPEN_SSL
55     , proto_tcps
56 #endif // YAMI4_WITH_OPEN_SSL
57 };
58 
59 enum io_direction { none, input, output, inout };
60 
61 class dump_sink;
62 
63 } // namespace details
64 
65 } // namespace yami
66 
67 #endif // YAMICORE_DETAILS_FWD_H_INCLUDED
68