NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
alloc.cpp
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
//#define BOOST_TEST_DYN_LINK
28
#define BOOST_TEST_MODULE message_buffer_alloc
29
#include <boost/test/unit_test.hpp>
30
31
#include <iostream>
32
#include <string>
33
34
#include <
websocketpp/message_buffer/alloc.hpp
>
35
36
template
<
template
<
class
>
class
con_msg_manager>
37
struct
stub
{
38
typedef
websocketpp::lib::shared_ptr<stub>
ptr
;
39
40
typedef
con_msg_manager<stub>
con_msg_man_type
;
41
typedef
typename
con_msg_man_type::ptr
con_msg_man_ptr
;
42
typedef
typename
con_msg_man_type::weak_ptr
con_msg_man_weak_ptr
;
43
44
stub
(con_msg_man_ptr manager,
websocketpp::frame::opcode::value
op,
size_t
size
= 128)
45
:
m_opcode
(op)
46
,
m_manager
(manager)
47
,
m_size
(
size
) {}
48
49
bool
recycle
() {
50
con_msg_man_ptr shared =
m_manager
.lock();
51
52
if
(shared) {
53
return
shared->recycle(
this
);
54
}
else
{
55
return
false
;
56
}
57
}
58
59
websocketpp::frame::opcode::value
m_opcode
;
60
con_msg_man_weak_ptr
m_manager
;
61
size_t
m_size
;
62
};
63
64
BOOST_AUTO_TEST_CASE
( basic_get_message ) {
65
typedef
stub<websocketpp::message_buffer::alloc::con_msg_manager>
66
message_type;
67
typedef
websocketpp::message_buffer::alloc::con_msg_manager<message_type>
68
con_msg_man_type
;
69
70
con_msg_man_type::ptr manager(
new
con_msg_man_type
());
71
message_type::ptr msg = manager->get_message(
websocketpp::frame::opcode::TEXT
,512);
72
73
BOOST_CHECK(msg);
74
BOOST_CHECK(msg->m_opcode ==
websocketpp::frame::opcode::TEXT
);
75
BOOST_CHECK(msg->m_manager.lock() == manager);
76
BOOST_CHECK(msg->m_size == 512);
77
}
78
79
BOOST_AUTO_TEST_CASE
( basic_get_manager ) {
80
typedef
stub<websocketpp::message_buffer::alloc::con_msg_manager>
81
message_type;
82
typedef
websocketpp::message_buffer::alloc::con_msg_manager<message_type>
83
con_msg_man_type
;
84
typedef
websocketpp::message_buffer::alloc::endpoint_msg_manager
85
<con_msg_man_type> endpoint_manager_type;
86
87
endpoint_manager_type em;
88
con_msg_man_type::ptr manager = em.
get_manager
();
89
message_type::ptr msg = manager->get_message(
websocketpp::frame::opcode::TEXT
,512);
90
91
BOOST_CHECK(msg);
92
BOOST_CHECK(msg->m_opcode ==
websocketpp::frame::opcode::TEXT
);
93
BOOST_CHECK(msg->m_manager.lock() == manager);
94
BOOST_CHECK(msg->m_size == 512);
95
}
96
stub
Definition:
alloc.cpp:37
stub::con_msg_man_type
con_msg_manager< stub > con_msg_man_type
Definition:
alloc.cpp:40
websocketpp::frame::opcode::value
value
Definition:
frame.hpp:77
stub::m_manager
con_msg_man_weak_ptr m_manager
Definition:
alloc.cpp:60
alloc.hpp
stub::stub
stub(con_msg_man_ptr manager, websocketpp::frame::opcode::value op, size_t size=128)
Definition:
alloc.cpp:44
websocketpp::message_buffer::alloc::endpoint_msg_manager::get_manager
con_msg_man_ptr get_manager() const
Get a pointer to a connection message manager.
Definition:
alloc.hpp:96
stub::recycle
bool recycle()
Definition:
alloc.cpp:49
stub::ptr
websocketpp::lib::shared_ptr< stub > ptr
Definition:
alloc.cpp:38
stub::m_opcode
websocketpp::frame::opcode::value m_opcode
Definition:
alloc.cpp:59
nonstd::span_lite::size
span_constexpr std::size_t size(span< T, Extent > const &spn)
Definition:
span-lite.hpp:1535
stub::con_msg_man_weak_ptr
con_msg_man_type::weak_ptr con_msg_man_weak_ptr
Definition:
alloc.cpp:42
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(basic_get_message)
Definition:
alloc.cpp:64
websocketpp::message_buffer::alloc::con_msg_manager
A connection message manager that allocates a new message for each request.
Definition:
alloc.hpp:41
websocketpp::message_buffer::alloc::endpoint_msg_manager
An endpoint message manager that allocates a new manager for each connection.
Definition:
alloc.hpp:88
stub::con_msg_man_ptr
con_msg_man_type::ptr con_msg_man_ptr
Definition:
alloc.cpp:41
stub::m_size
size_t m_size
Definition:
alloc.cpp:61
websocketpp::frame::opcode::TEXT
Definition:
frame.hpp:96
ndnSIM
NFD
websocketpp
test
message_buffer
alloc.cpp
Generated on Fri May 6 2022 12:34:14 for ndnSIM by
1.8.13