Skip to content

Commit 2c7474e

Browse files
committed
unirec++ - bidirectionalInterface - dont send EoF if interface is not initialized, dont set empty template
1 parent ed158c7 commit 2c7474e

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

unirec/include/unirec++/bidirectionalInterface.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ class UnirecBidirectionalInterface {
202202
uint64_t m_sequenceNumber;
203203
const void* m_prioritizedDataPointer;
204204
bool m_sendEoFonExit;
205+
bool m_isInitialized;
206+
205207
UnirecRecord m_unirecRecord;
206208

207209
friend class Unirec;

unirec/unirec++/bidirectionalInterface.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,6 @@
1313

1414
namespace Nemea {
1515

16-
UnirecBidirectionalInterface::~UnirecBidirectionalInterface()
17-
{
18-
if (m_sendEoFonExit) {
19-
sendEoF();
20-
}
21-
22-
ur_free_template(m_template);
23-
}
24-
2516
UnirecBidirectionalInterface::UnirecBidirectionalInterface(
2617
uint8_t inputInterfaceID,
2718
uint8_t outputInterfaceID)
@@ -31,10 +22,20 @@ UnirecBidirectionalInterface::UnirecBidirectionalInterface(
3122
, m_sequenceNumber(0)
3223
, m_prioritizedDataPointer(nullptr)
3324
, m_sendEoFonExit(true)
25+
, m_isInitialized(false)
3426
{
3527
setRequieredFormat("");
3628
}
3729

30+
UnirecBidirectionalInterface::~UnirecBidirectionalInterface()
31+
{
32+
if (m_sendEoFonExit && m_isInitialized) {
33+
sendEoF();
34+
}
35+
36+
ur_free_template(m_template);
37+
}
38+
3839
std::optional<UnirecRecordView> UnirecBidirectionalInterface::receive()
3940
{
4041
const void* receivedData;
@@ -95,6 +96,10 @@ void UnirecBidirectionalInterface::setRequieredFormat(const std::string& templat
9596
"format.");
9697
}
9798

99+
if (templateSpecification.empty()) {
100+
return;
101+
}
102+
98103
changeInternalTemplate(templateSpecification);
99104
}
100105

@@ -120,6 +125,8 @@ void UnirecBidirectionalInterface::changeInternalTemplate(const std::string& tem
120125
}
121126

122127
m_unirecRecord = createUnirecRecord();
128+
129+
m_isInitialized = true;
123130
}
124131

125132
void UnirecBidirectionalInterface::changeTemplate()

0 commit comments

Comments
 (0)