27 auto evaluation = decision->evaluate();
28 addEvaluation( token_ptr, request_ptr, message_ptr, std::move(decision), evaluation );
40 for (
auto [ cost, token_ptr, request_ptr, message_ptr, event_ptr ] :
evaluatedDecisions ) {
43 return event_ptr.lock();
53 assert(request->token->node);
57 auto recipientHeader = messageDefinition->getRecipientHeader(request->token->getAttributeRegistry(),request->token->status,*request->token->data,request->token->globals);
58 requests.emplace_back( request->token->weak_from_this(), request->weak_from_this(), recipientHeader );
62 for (
auto& [ message_ptr ] : messages ) {
64 if (
auto message = message_ptr.lock();
66 std::ranges::contains(senderCandidates, message->origin) &&
67 message->matches(recipientHeader)
70 auto decision = std::make_shared<MessageDeliveryDecision>(request->token, message.get(),
evaluator);
76 auto message =
static_cast<const Message*
>(observable);
79 messages.emplace_back( message->weak_from_this() );
82 for (
auto& [token_ptr, request_ptr, recipientHeader ] : requests ) {
84 if (
auto token = token_ptr.lock();
86 std::ranges::contains(recipientCandidates, token->node) &&
87 message->matches(recipientHeader)
90 auto decision = std::make_shared<MessageDeliveryDecision>(token.get(), message,
evaluator);