Jpp
software
DataQueue
FrameFactory
input_buffer_collector.hh
Go to the documentation of this file.
1
#ifndef DATAQUEUE_FRAMEFACTORY_INPUT_BUFFER_COLLECTOR_HH
2
#define DATAQUEUE_FRAMEFACTORY_INPUT_BUFFER_COLLECTOR_HH
3
4
#include <
Buffers/clb_datagram.hh
>
5
6
#include <boost/thread/mutex.hpp>
7
#include <deque>
8
#include <iostream>
9
10
/**
11
* \author cpellegrino
12
*/
13
14
class
InBufferCollector
15
{
16
typedef
std::deque<CLBDataGram*>
datagram_collector_t
;
17
18
datagram_collector_t
m_collector
;
19
20
boost::mutex
m_mutex
;
21
22
InBufferCollector
()
23
{}
24
25
public
:
26
27
static
InBufferCollector
&
getCollector
()
28
{
29
static
InBufferCollector
istance;
30
31
return
istance;
32
}
33
34
CLBDataGram
*
getEmptyDataGram
()
35
{
36
CLBDataGram
* temp;
37
38
boost::mutex::scoped_lock lock(
m_mutex
);
39
40
if
(
m_collector
.empty()) {
41
temp =
new
CLBDataGram
;
42
}
else
{
43
temp =
m_collector
.back();
44
45
m_collector
.pop_back();
46
temp->
clear
();
47
}
48
49
benchmark::chrono_reset
(*temp);
50
return
temp;
51
}
52
53
void
putDataGram
(
CLBDataGram
* p)
54
{
55
boost::mutex::scoped_lock lock(
m_mutex
);
56
57
if
(
m_collector
.size() > 40000)
58
{
59
delete
p;
60
}
61
else
62
{
63
m_collector
.push_back(p);
64
}
65
}
66
67
};
68
69
#endif // DATAQUEUE_FRAMEFACTORY_INPUT_BUFFER_COLLECTOR_HH
InBufferCollector::putDataGram
void putDataGram(CLBDataGram *p)
Definition:
input_buffer_collector.hh:53
InBufferCollector::datagram_collector_t
std::deque< CLBDataGram * > datagram_collector_t
Definition:
input_buffer_collector.hh:16
InBufferCollector
Definition:
input_buffer_collector.hh:14
benchmark::chrono_reset
void chrono_reset(chronometrable &chr)
Definition:
time_tracking.hh:47
InBufferCollector::m_mutex
boost::mutex m_mutex
Definition:
input_buffer_collector.hh:20
InBufferCollector::getEmptyDataGram
CLBDataGram * getEmptyDataGram()
Definition:
input_buffer_collector.hh:34
CLBDataGram
Definition:
clb_datagram.hh:15
clb_datagram.hh
InBufferCollector::InBufferCollector
InBufferCollector()
Definition:
input_buffer_collector.hh:22
InBufferCollector::getCollector
static InBufferCollector & getCollector()
Definition:
input_buffer_collector.hh:27
CLBDataGram::clear
void clear()
Definition:
clb_datagram.hh:60
InBufferCollector::m_collector
datagram_collector_t m_collector
Definition:
input_buffer_collector.hh:18
Generated by
1.8.16