NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
network.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2014, Peter Thorson. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright
7
* notice, this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the name of the WebSocket++ Project nor the
12
* names of its contributors may be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
*/
27
28
#ifndef WEBSOCKETPP_COMMON_NETWORK_HPP
29
#define WEBSOCKETPP_COMMON_NETWORK_HPP
30
31
// For ntohs and htons
32
#if defined(_WIN32)
33
#include <winsock2.h>
34
#else
35
//#include <arpa/inet.h>
36
#include <netinet/in.h>
37
#endif
38
39
#include <
websocketpp/common/stdint.hpp
>
40
41
namespace
websocketpp
{
42
namespace
lib {
43
namespace
net
{
44
45
inline
bool
is_little_endian
() {
46
short
int
val = 0x1;
47
char
*ptr =
reinterpret_cast<
char
*
>
(&val);
48
return
(ptr[0] == 1);
49
}
50
51
#define TYP_INIT 0
52
#define TYP_SMLE 1
53
#define TYP_BIGE 2
54
56
66
inline
uint64_t
_htonll
(uint64_t src) {
67
static
int
typ =
TYP_INIT
;
68
unsigned
char
c;
69
union
{
70
uint64_t ull;
71
unsigned
char
c[8];
72
} x;
73
if
(typ ==
TYP_INIT
) {
74
x.ull = 0x01;
75
typ = (x.c[7] == 0x01ULL) ?
TYP_BIGE
:
TYP_SMLE
;
76
}
77
if
(typ ==
TYP_BIGE
)
78
return
src;
79
x.ull = src;
80
c = x.c[0]; x.c[0] = x.c[7]; x.c[7] = c;
81
c = x.c[1]; x.c[1] = x.c[6]; x.c[6] = c;
82
c = x.c[2]; x.c[2] = x.c[5]; x.c[5] = c;
83
c = x.c[3]; x.c[3] = x.c[4]; x.c[4] = c;
84
return
x.ull;
85
}
86
88
98
inline
uint64_t
_ntohll
(uint64_t src) {
99
return
_htonll
(src);
100
}
101
102
}
// net
103
}
// lib
104
}
// websocketpp
105
106
#endif // WEBSOCKETPP_COMMON_NETWORK_HPP
websocketpp::lib::net::_htonll
uint64_t _htonll(uint64_t src)
Convert 64 bit value to network byte order.
Definition:
network.hpp:66
stdint.hpp
websocketpp::lib::net::_ntohll
uint64_t _ntohll(uint64_t src)
Convert 64 bit value to host byte order.
Definition:
network.hpp:98
websocketpp
Namespace for the WebSocket++ project.
Definition:
base64.hpp:41
TYP_INIT
#define TYP_INIT
Definition:
network.hpp:51
websocketpp::lib::net::is_little_endian
bool is_little_endian()
Definition:
network.hpp:45
TYP_SMLE
#define TYP_SMLE
Definition:
network.hpp:52
TYP_BIGE
#define TYP_BIGE
Definition:
network.hpp:53
ndn::net
Definition:
link-type-helper.cpp:30
ndnSIM
NFD
websocketpp
websocketpp
common
network.hpp
Generated on Fri May 6 2022 12:34:13 for ndnSIM by
1.8.13