NetCpp
v0.2
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Macros
Pages
protocol.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2013 Evidence Srl - www.evidence.eu.com
3
*
4
* Boost Software License - Version 1.0 - August 17th, 2003
5
*
6
* Permission is hereby granted, free of charge, to any person or organization
7
* obtaining a copy of the software and accompanying documentation covered by
8
* this license (the "Software") to use, reproduce, display, distribute,
9
* execute, and transmit the Software, and to prepare derivative works of the
10
* Software, and to permit third-parties to whom the Software is furnished to
11
* do so, all subject to the following:
12
*
13
* The copyright notices in the Software and this entire statement, including
14
* the above license grant, this restriction and the following disclaimer,
15
* must be included in all copies of the Software, in whole or in part, and
16
* all derivative works of the Software, unless such copies or derivative
17
* works are solely in the form of machine-executable object code generated by
18
* a source language processor.
19
*
20
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
23
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
24
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
25
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26
* DEALINGS IN THE SOFTWARE.
27
*/
28
29
#ifndef PROTOCOL_HPP_
30
#define PROTOCOL_HPP_
31
32
namespace
net {
33
34
/**
35
* @brief Protocol type
36
*/
37
enum class
protocol_type
{
38
STREAM
,
//< Stream (e.g., TCP) communications
39
DGRAM
//< Dgram (e.g., UDP) communications
40
};
41
42
/**
43
* @brief Protocol domain
44
*/
45
enum class
protocol_domain
{
46
LOCAL
,
//< Local (e.g., Unix) communications
47
IPv4
//< IPv4 communications
48
};
49
50
51
/**
52
* @brief Protocol used for the communication
53
*
54
* This class encapsulates information about type and domain of
55
* the communication protocol.
56
*/
57
class
protocol
{
58
public
:
59
/**
60
* @brief Constructor
61
*
62
* @param type Protocol type (see net::protocol_type)
63
* @param domain Protocol domain (see net::protocol_domain)
64
*/
65
protocol
(
enum
protocol_type
type,
66
enum
protocol_domain
domain):
67
type_{type}, domain_{domain}{}
68
69
/**
70
* @brief Get protocol type
71
*
72
* @return protocol type
73
*/
74
inline
enum
protocol_type
getType()
const
75
{
76
return
type_;
77
}
78
79
/**
80
* @brief Get protocol domain
81
*
82
* @return protocol domain
83
*/
84
inline
enum
protocol_domain
getDomain()
const
85
{
86
return
domain_;
87
}
88
89
/**
90
* @brief Operator ==
91
*
92
* @return true if protocols are equal; false otherwise
93
*/
94
inline
bool
operator==(
const
protocol
& p)
const
95
{
96
if
((type_ == p.type_) && (domain_ == p.domain_))
97
return
true
;
98
return
false
;
99
}
100
101
/**
102
* @brief Operator !=
103
*
104
* @return false if protocols are equal; true otherwise
105
*/
106
inline
bool
operator!=(
const
protocol
& p)
const
107
{
108
if
((type_ == p.type_) && (domain_ == p.domain_))
109
return
false
;
110
return
true
;
111
}
112
113
private
:
114
/// Protocol type
115
enum
protocol_type
type_;
116
117
/// Protocol domain
118
enum
protocol_domain
domain_;
119
};
120
121
static
const
net::protocol_type
STREAM
=
net::protocol_type::STREAM
;
122
static
const
net::protocol_type
DGRAM
=
net::protocol_type::STREAM
;
123
static
const
net::protocol_domain
IPv4
=
net::protocol_domain::IPv4
;
124
static
const
net::protocol_domain
LOCAL
=
net::protocol_domain::LOCAL
;
125
126
}
// net
127
128
#endif // PROTOCOL_HPP_
129
include
protocol.hpp
Generated on Tue Jul 23 2013 09:15:00 for NetCpp by
1.8.1.2