@@ -184,11 +184,11 @@ DataRelayer::ActivityStats DataRelayer::processDanglingInputs(std::vector<Expira
184184 // We check that no data is already there for the given cell
185185 // it is enough to check the first element
186186 auto & part = mCache [ti * mDistinctRoutesIndex .size () + expirator.routeIndex .value ];
187- if (!part.messages .empty () && part.header ( 0 ) != nullptr ) {
187+ if (!part.messages .empty () && ( part.messages | get_header{ 0 } ) != nullptr ) {
188188 headerPresent++;
189189 continue ;
190190 }
191- if (!part.messages .empty () && part.payload ( 0 ) != nullptr ) {
191+ if (!part.messages .empty () && ( part.messages | get_payload{ 0 , 0 } ) != nullptr ) {
192192 payloadPresent++;
193193 continue ;
194194 }
@@ -213,9 +213,9 @@ DataRelayer::ActivityStats DataRelayer::processDanglingInputs(std::vector<Expira
213213 auto partial = getPartialRecord (ti);
214214 // TODO: get the data ref from message model
215215 auto getter = [&partial](size_t idx, size_t part) {
216- if (!partial[idx].messages .empty () && partial[idx].header ( part).get ()) {
217- auto header = partial[idx].header ( part).get ();
218- auto payload = partial[idx].payload ( part).get ();
216+ if (!partial[idx].messages .empty () && ( partial[idx].messages | get_header{ part} ).get ()) {
217+ auto header = ( partial[idx].messages | get_header{ part} ).get ();
218+ auto payload = ( partial[idx].messages | get_payload{ part, 0 } ).get ();
219219 return DataRef{nullptr ,
220220 reinterpret_cast <const char *>(header->GetData ()),
221221 reinterpret_cast <char const *>(payload ? payload->GetData () : nullptr ),
@@ -227,7 +227,7 @@ DataRelayer::ActivityStats DataRelayer::processDanglingInputs(std::vector<Expira
227227 return partial[idx].messages | count_parts{};
228228 };
229229 auto refCountGetter = [&partial](size_t idx) -> int {
230- auto & header = static_cast <const fair::mq::shmem::Message&>(*partial[idx].header ( 0 ));
230+ auto & header = static_cast <const fair::mq::shmem::Message&>(*( partial[idx].messages | get_header{ 0 } ));
231231 return header.GetRefCount ();
232232 };
233233 InputSpan span{getter, nPartsGetter, refCountGetter, static_cast <size_t >(partial.size ())};
@@ -246,8 +246,8 @@ DataRelayer::ActivityStats DataRelayer::processDanglingInputs(std::vector<Expira
246246 activity.expiredSlots ++;
247247
248248 mTimesliceIndex .markAsDirty (slot, true );
249- assert (part.header ( 0 ) != nullptr );
250- assert (part.payload ( 0 ) != nullptr );
249+ assert (( part.messages | get_header{ 0 } ) != nullptr );
250+ assert (( part.messages | get_payload{ 0 , 0 } ) != nullptr );
251251 }
252252 }
253253 LOGP (debug, " DataRelayer::processDanglingInputs headerPresent:{}, payloadPresent:{}, noCheckers:{}, badSlot:{}, checkerDenied:{}" ,
@@ -786,9 +786,9 @@ void DataRelayer::getReadyToProcess(std::vector<DataRelayer::RecordAction>& comp
786786 auto partial = getPartialRecord (li);
787787 // TODO: get the data ref from message model
788788 auto getter = [&partial](size_t idx, size_t part) {
789- if (!partial[idx].messages .empty () && partial[idx].header ( part).get ()) {
790- auto header = partial[idx].header ( part).get ();
791- auto payload = partial[idx].payload ( part).get ();
789+ if (!partial[idx].messages .empty () && ( partial[idx].messages | get_header{ part} ).get ()) {
790+ auto header = ( partial[idx].messages | get_header{ part} ).get ();
791+ auto payload = ( partial[idx].messages | get_payload{ part, 0 } ).get ();
792792 return DataRef{nullptr ,
793793 reinterpret_cast <const char *>(header->GetData ()),
794794 reinterpret_cast <char const *>(payload ? payload->GetData () : nullptr ),
@@ -800,7 +800,7 @@ void DataRelayer::getReadyToProcess(std::vector<DataRelayer::RecordAction>& comp
800800 return partial[idx].messages | count_parts{};
801801 };
802802 auto refCountGetter = [&partial](size_t idx) -> int {
803- auto & header = static_cast <const fair::mq::shmem::Message&>(*partial[idx].header ( 0 ));
803+ auto & header = static_cast <const fair::mq::shmem::Message&>(*( partial[idx].messages | get_header{ 0 } ));
804804 return header.GetRefCount ();
805805 };
806806 InputSpan span{getter, nPartsGetter, refCountGetter, static_cast <size_t >(partial.size ())};
@@ -952,10 +952,10 @@ std::vector<o2::framework::MessageSet> DataRelayer::consumeExistingInputsForTime
952952 // TODO: in the original implementation of the cache, there have been only two messages per entry,
953953 // check if the 2 above corresponds to the number of messages.
954954 for (size_t pi = 0 ; pi < (cache[cacheId].messages | count_parts{}); pi++) {
955- auto & header = cache[cacheId].header (pi) ;
955+ auto & header = cache[cacheId].messages | get_header{pi} ;
956956 auto && newHeader = header->GetTransport ()->CreateMessage ();
957957 newHeader->Copy (*header);
958- messages[arg].add (PartRef{std::move (newHeader), std::move (cache[cacheId].payload (pi) )});
958+ messages[arg].add (PartRef{std::move (newHeader), std::move (cache[cacheId].messages | get_payload{pi, 0 } )});
959959 }
960960 };
961961
0 commit comments