Skip to content

Commit a7da1a5

Browse files
committed
DPL: replace MessageSet::associateHeader / associatePayload
1 parent 35e4519 commit a7da1a5

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

Framework/Core/src/DataProcessingDevice.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2140,8 +2140,9 @@ bool DataProcessingDevice::tryDispatchComputation(ServiceRegistryRef ref, std::v
21402140
// sequence is the header message
21412141
// - each part has one or more payload messages
21422142
// - InputRecord provides all payloads as header-payload pair
2143-
auto const& headerMsg = currentSetOfInputs[i].associatedHeader(partindex);
2144-
auto const& payloadMsg = currentSetOfInputs[i].associatedPayload(partindex);
2143+
auto const indices = currentSetOfInputs[i].messages | get_pair{partindex};
2144+
auto const& headerMsg = currentSetOfInputs[i].messages[indices.headerIdx];
2145+
auto const& payloadMsg = currentSetOfInputs[i].messages[indices.payloadIdx];
21452146
headerptr = static_cast<char const*>(headerMsg->GetData());
21462147
payloadptr = payloadMsg ? static_cast<char const*>(payloadMsg->GetData()) : nullptr;
21472148
payloadSize = payloadMsg ? payloadMsg->GetSize() : 0;

Framework/Core/test/test_MessageSet.cxx

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ TEST_CASE("MessageSet")
4747
CHECK_THROWS((msgSet.messages | get_pair{1}));
4848
REQUIRE((msgSet.messages | get_num_payloads{0}) == 1);
4949
REQUIRE((msgSet.messages | count_parts{}) == 1);
50+
// messages: [hdr, pl] — one pair
51+
REQUIRE((msgSet.messages | get_pair{0}).headerIdx == 0);
52+
REQUIRE((msgSet.messages | get_pair{0}).payloadIdx == 1);
53+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
54+
auto indices = msgSet.messages | get_pair{i};
55+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
56+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
57+
}
5058
}
5159

5260
TEST_CASE("MessageSetWithFunction")
@@ -74,6 +82,11 @@ TEST_CASE("MessageSetWithFunction")
7482
CHECK_THROWS((msgSet.messages | get_pair{1}));
7583
REQUIRE((msgSet.messages | get_num_payloads{0}) == 1);
7684
REQUIRE((msgSet.messages | count_parts{}) == 1);
85+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
86+
auto indices = msgSet.messages | get_pair{i};
87+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
88+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
89+
}
7790
}
7891

7992
TEST_CASE("MessageSetWithMultipart")
@@ -107,6 +120,16 @@ TEST_CASE("MessageSetWithMultipart")
107120
CHECK_THROWS((msgSet.messages | get_pair{2}));
108121
REQUIRE((msgSet.messages | get_num_payloads{0}) == 2);
109122
REQUIRE((msgSet.messages | count_parts{}) == 1);
123+
// messages: [hdr, pl0, pl1] — one header, two payloads
124+
REQUIRE((msgSet.messages | get_pair{0}).headerIdx == 0);
125+
REQUIRE((msgSet.messages | get_pair{0}).payloadIdx == 1);
126+
REQUIRE((msgSet.messages | get_pair{1}).headerIdx == 0);
127+
REQUIRE((msgSet.messages | get_pair{1}).payloadIdx == 2);
128+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
129+
auto indices = msgSet.messages | get_pair{i};
130+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
131+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
132+
}
110133
}
111134

112135
TEST_CASE("MessageSetAddPartRef")
@@ -183,6 +206,11 @@ TEST_CASE("MessageSetAddMultiple")
183206
REQUIRE((msgSet.messages | get_num_payloads{2}) == 2);
184207
REQUIRE((msgSet.messages | count_parts{}) == 3);
185208
REQUIRE((msgSet.messages | count_payloads{}) == 4);
209+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
210+
auto indices = msgSet.messages | get_pair{i};
211+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
212+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
213+
}
186214
}
187215

188216
TEST_CASE("GetHeaderPayloadOperators")
@@ -234,6 +262,16 @@ TEST_CASE("GetHeaderPayloadOperators")
234262

235263
REQUIRE((msgSet.messages | count_parts{}) == 2);
236264
REQUIRE((msgSet.messages | count_payloads{}) == 2);
265+
// messages: [hdr0, pl0, hdr1, pl1] — two standard pairs
266+
REQUIRE((msgSet.messages | get_pair{0}).headerIdx == 0);
267+
REQUIRE((msgSet.messages | get_pair{0}).payloadIdx == 1);
268+
REQUIRE((msgSet.messages | get_pair{1}).headerIdx == 2);
269+
REQUIRE((msgSet.messages | get_pair{1}).payloadIdx == 3);
270+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
271+
auto indices = msgSet.messages | get_pair{i};
272+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
273+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
274+
}
237275
}
238276

239277
TEST_CASE("GetHeaderPayloadMultiPayload")
@@ -323,6 +361,20 @@ TEST_CASE("GetHeaderPayloadMultiPayload")
323361
REQUIRE((msgSet.messages | get_num_payloads{1}) == 3);
324362
REQUIRE((msgSet.messages | count_parts{}) == 2);
325363
REQUIRE((msgSet.messages | count_payloads{}) == 4);
364+
// messages: [hdr0, pl0, hdr1, pl1_0, pl1_1, pl1_2]
365+
REQUIRE((msgSet.messages | get_pair{0}).headerIdx == 0);
366+
REQUIRE((msgSet.messages | get_pair{0}).payloadIdx == 1);
367+
REQUIRE((msgSet.messages | get_pair{1}).headerIdx == 2);
368+
REQUIRE((msgSet.messages | get_pair{1}).payloadIdx == 3);
369+
REQUIRE((msgSet.messages | get_pair{2}).headerIdx == 2);
370+
REQUIRE((msgSet.messages | get_pair{2}).payloadIdx == 4);
371+
REQUIRE((msgSet.messages | get_pair{3}).headerIdx == 2);
372+
REQUIRE((msgSet.messages | get_pair{3}).payloadIdx == 5);
373+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
374+
auto indices = msgSet.messages | get_pair{i};
375+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
376+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
377+
}
326378
}
327379

328380
TEST_CASE("TraditionalSplitParts")
@@ -390,4 +442,16 @@ TEST_CASE("TraditionalSplitParts")
390442
}
391443
REQUIRE((msgSet.messages | count_parts{}) == 3);
392444
REQUIRE((msgSet.messages | count_payloads{}) == 3);
445+
// messages: [hdr0, pl0, hdr1, pl1, hdr2, pl2] — three traditional split pairs
446+
REQUIRE((msgSet.messages | get_pair{0}).headerIdx == 0);
447+
REQUIRE((msgSet.messages | get_pair{0}).payloadIdx == 1);
448+
REQUIRE((msgSet.messages | get_pair{1}).headerIdx == 2);
449+
REQUIRE((msgSet.messages | get_pair{1}).payloadIdx == 3);
450+
REQUIRE((msgSet.messages | get_pair{2}).headerIdx == 4);
451+
REQUIRE((msgSet.messages | get_pair{2}).payloadIdx == 5);
452+
for (size_t i = 0; i < msgSet.pairMap.size(); ++i) {
453+
auto indices = msgSet.messages | get_pair{i};
454+
REQUIRE(&msgSet.messages[indices.headerIdx] == &msgSet.associatedHeader(i));
455+
REQUIRE(&msgSet.messages[indices.payloadIdx] == &msgSet.associatedPayload(i));
456+
}
393457
}

0 commit comments

Comments
 (0)