|
|
@@ -673,13 +673,14 @@ void report_record_claim(const middleware::web_service::Message& message,
|
|
|
std::string_view result,
|
|
|
std::string_view reason,
|
|
|
std::uint32_t recordIndex,
|
|
|
- std::uint32_t completionFlagIndex) noexcept {
|
|
|
+ std::uint32_t completionFlagIndex,
|
|
|
+ std::uint32_t scoreValue) noexcept {
|
|
|
std::array<char, core::log::kLineCapacity> line{};
|
|
|
const int count = std::snprintf(
|
|
|
line.data(),
|
|
|
line.size(),
|
|
|
"ev=ws1801 stage=claim result=%.*s reason=%.*s transaction=%u payload_bytes=%zu "
|
|
|
- "record_index=%u completion_flag_index=%u",
|
|
|
+ "record_index=%u completion_flag_index=%u score=%u total_score=%u claims=%zu",
|
|
|
static_cast<int>(result.size()),
|
|
|
result.data(),
|
|
|
static_cast<int>(reason.size()),
|
|
|
@@ -687,7 +688,10 @@ void report_record_claim(const middleware::web_service::Message& message,
|
|
|
static_cast<unsigned>(message.transactionId),
|
|
|
message.payload.size(),
|
|
|
recordIndex,
|
|
|
- completionFlagIndex);
|
|
|
+ completionFlagIndex,
|
|
|
+ scoreValue,
|
|
|
+ state::record_claims::total_score(),
|
|
|
+ state::record_claims::count());
|
|
|
if (count > 0) {
|
|
|
core::log::write(core::log::Channel::server,
|
|
|
result == "ok" ? core::log::Level::debug : core::log::Level::warn,
|
|
|
@@ -852,21 +856,27 @@ void claim_record(const middleware::web_service::Message& message, Outcome& outc
|
|
|
namespace records = state::build_data::records;
|
|
|
middleware::web_service::messages::opcode1801::Request request{};
|
|
|
if (!middleware::web_service::messages::opcode1801::parse_request(message, request)) {
|
|
|
- report_record_claim(message, "fail", "payload_bits", 0, records::kUnavailableFlagIndex);
|
|
|
+ report_record_claim(message, "fail", "payload_bits", 0, records::kUnavailableFlagIndex, 0);
|
|
|
return;
|
|
|
}
|
|
|
records::Definition definition{};
|
|
|
if (!state::build_data::find_record_definition(request.recordIndex, definition)) {
|
|
|
- report_record_claim(
|
|
|
- message, "fail", "record_definition", request.recordIndex,
|
|
|
- records::kUnavailableFlagIndex);
|
|
|
+ report_record_claim(message,
|
|
|
+ "fail",
|
|
|
+ "record_definition",
|
|
|
+ request.recordIndex,
|
|
|
+ records::kUnavailableFlagIndex,
|
|
|
+ 0);
|
|
|
return;
|
|
|
}
|
|
|
if (definition.completionFlagIndex == records::kUnavailableFlagIndex) {
|
|
|
// The record carries no completion flag, or its slot has no row in the account bank.
|
|
|
- report_record_claim(
|
|
|
- message, "fail", "no_completion_flag", request.recordIndex,
|
|
|
- records::kUnavailableFlagIndex);
|
|
|
+ report_record_claim(message,
|
|
|
+ "fail",
|
|
|
+ "no_completion_flag",
|
|
|
+ request.recordIndex,
|
|
|
+ records::kUnavailableFlagIndex,
|
|
|
+ definition.scoreValue);
|
|
|
return;
|
|
|
}
|
|
|
if (!state::record_claims::claim(definition.completionFlagIndex, definition.scoreValue)) {
|
|
|
@@ -874,13 +884,18 @@ void claim_record(const middleware::web_service::Message& message, Outcome& outc
|
|
|
"fail",
|
|
|
"flag_index_range",
|
|
|
request.recordIndex,
|
|
|
- definition.completionFlagIndex);
|
|
|
+ definition.completionFlagIndex,
|
|
|
+ definition.scoreValue);
|
|
|
return;
|
|
|
}
|
|
|
// The claim is already in the store, so the account image only has to be sent again.
|
|
|
outcome.hasRecordClaim = true;
|
|
|
- report_record_claim(
|
|
|
- message, "ok", "claimed", request.recordIndex, definition.completionFlagIndex);
|
|
|
+ report_record_claim(message,
|
|
|
+ "ok",
|
|
|
+ "claimed",
|
|
|
+ request.recordIndex,
|
|
|
+ definition.completionFlagIndex,
|
|
|
+ definition.scoreValue);
|
|
|
}
|
|
|
|
|
|
} // namespace sunrise::server::web_service
|