Main Page
Namespaces
Namespace List
Namespace Members
All
Functions
Enumerations
Enumerator
Classes
Class List
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
~
Functions
a
b
c
d
e
f
g
h
i
k
l
m
o
p
r
s
t
u
w
~
Variables
a
b
c
d
e
f
h
i
l
m
n
p
q
r
s
t
u
v
w
Typedefs
Enumerations
Enumerator
Files
File List
File Members
All
Functions
Typedefs
Enumerations
Enumerator
Macros
include
pf_driver
pf
pf_writer.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
pf_driver/pf/writer.h
"
4
#include "
pf_driver/pf/pf_parser.h
"
5
#include "
pf_driver/communication/transport.h
"
6
7
template
<
typename
T>
8
class
PFWriter
:
public
Writer
<T>
9
{
10
public
:
11
PFWriter
(std::unique_ptr<Transport>&& transport, std::shared_ptr<
Parser<T>
> parser)
12
:
transport_
(
std
::
move
(transport)),
parser_
(parser),
is_running_
(false)
13
{
14
}
15
16
virtual
bool
start
()
17
{
18
std::unique_lock<std::mutex> lck(
mtx_
);
19
is_running_
=
true
;
20
if
(
transport_
)
21
{
22
if
(
transport_
->is_connected())
23
return
true
;
24
25
return
transport_
->connect();
26
}
27
return
false
;
28
}
29
30
virtual
bool
stop
()
31
{
32
std::unique_lock<std::mutex> lck(
mtx_
);
33
is_running_
=
false
;
34
if
(
transport_
&&
transport_
->is_connected())
35
{
36
return
transport_
->disconnect();
37
}
38
return
false
;
39
}
40
41
virtual
bool
get
(std::vector<std::unique_ptr<T>>& packets)
42
{
43
std::unique_lock<std::mutex> lck(
mtx_
);
44
if
(!
is_running_
)
45
{
46
return
false
;
47
}
48
boost::array<uint8_t, 4096> buf;
49
size_t
read = 0;
50
size_t
used = 0;
51
if
(
transport_
->readWithTimeout(buf, read, 2))
52
{
53
persistent_buffer_
.insert(
persistent_buffer_
.end(), buf.begin(), buf.begin() + read);
54
parser_
->parse(
persistent_buffer_
.data(),
persistent_buffer_
.size(), packets, used);
55
56
if
(used)
57
{
58
if
(used ==
persistent_buffer_
.size())
59
persistent_buffer_
.clear();
60
else
61
persistent_buffer_
.erase(
persistent_buffer_
.begin(),
persistent_buffer_
.begin() + used);
62
}
63
return
true
;
64
}
65
return
false
;
66
}
67
68
private
:
69
std::unique_ptr<Transport>
transport_
;
70
std::shared_ptr<Parser<T>>
parser_
;
71
std::vector<uint8_t>
persistent_buffer_
;
72
bool
is_running_
;
73
std::mutex
mtx_
;
74
};
PFWriter::parser_
std::shared_ptr< Parser< T > > parser_
Definition:
pf_writer.h:70
PFWriter::is_running_
bool is_running_
Definition:
pf_writer.h:72
PFWriter
Definition:
pf_writer.h:8
PFWriter::stop
virtual bool stop()
Definition:
pf_writer.h:30
PFWriter::persistent_buffer_
std::vector< uint8_t > persistent_buffer_
Definition:
pf_writer.h:71
PFWriter::mtx_
std::mutex mtx_
Definition:
pf_writer.h:73
PFWriter::PFWriter
PFWriter(std::unique_ptr< Transport > &&transport, std::shared_ptr< Parser< T >> parser)
Definition:
pf_writer.h:11
Parser
Definition:
parser.h:4
pf_parser.h
PFWriter::get
virtual bool get(std::vector< std::unique_ptr< T >> &packets)
Definition:
pf_writer.h:41
std
transport.h
PFWriter::start
virtual bool start()
Definition:
pf_writer.h:16
Writer
Definition:
writer.h:7
PFWriter::transport_
std::unique_ptr< Transport > transport_
Definition:
pf_writer.h:69
writer.h
move
void move(std::vector< T > &a, std::vector< T > &b)
pf_driver
Author(s): Harsh Deshpande
autogenerated on Sun Feb 4 2024 03:32:56