MAK Data Logger API Documentation for DIS
Home
Modules
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
libsrc
lgrUtil
sharedQueue.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 1992-2010 VT MAK
3
** All rights reserved.
4
******************************************************************************/
5
8
9
#ifndef sharedQueue_H_
10
#define sharedQueue_H_
11
12
#include <deque>
13
#include "
threadSafe.h
"
14
#include "
collectors.h
"
15
16
namespace
MAKLogger
17
{
18
20
template
<
typename
T>
21
class
DtSharedQueue
22
{
23
public
:
24
25
DtSharedQueue
() :
myDeque
(std::deque<T> ())
26
{
27
}
28
29
DtSharedQueue
(
const
DtSharedQueue
& original)
30
{
31
*
myDeque
= *original.
myDeque
;
32
}
33
34
int
size
()
const
35
{
36
return
static_cast<
int
>
(
myDeque
->size());
37
}
38
39
void
clear
()
40
{
41
myDeque
->clear();
42
}
43
44
void
push
(
const
T& input)
45
{
46
myDeque
->push_back(input);
47
}
48
49
void
push_priority
(
const
T& input)
50
{
51
myDeque
->push_front(input);
52
}
53
54
bool
pop
(T& output)
55
{
56
DtScopedSequenceLock
lock =
myDeque
.
sequenceLock
();
57
if
(
myDeque
->empty() ==
false
)
58
{
59
output =
myDeque
->front();
60
myDeque
->pop_front();
61
return
true
;
62
}
63
return
false
;
64
}
65
66
void
move
(
DtCollector<T>
& output)
67
{
70
DtScopedSequenceLock
lock =
myDeque
.
sequenceLock
();
71
typename
std::deque<T>::iterator startIter =
myDeque
->begin();
72
typename
std::deque<T>::iterator endIter =
myDeque
->end();
73
for
(;startIter != endIter;++startIter)
74
{
75
output.
collect
(*startIter);
76
}
77
myDeque
->clear();
78
}
79
80
protected
:
81
DtThreadSafe<std::deque<T>
>
myDeque
;
82
};
83
84
}
85
86
#endif
87
Document ID: Generated on Thu Apr 11 12:13:00 EDT 2013 from SVN revision 126011
Copyright © 2005-2012 VT MÄK. All Rights Reserved (
www.mak.com
)