commit:     35b526007008c0ab22089e1cc130a2bddcdcb162
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 20 15:54:14 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 20 15:54:14 2025 +0000
URL:        https://gitweb.gentoo.org/proj/steve.git/commit/?id=35b52600

Share some common message parts

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 src/steve.cxx | 83 +++++++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 55 insertions(+), 28 deletions(-)

diff --git a/src/steve.cxx b/src/steve.cxx
index 803a7fc..7ec39bb 100644
--- a/src/steve.cxx
+++ b/src/steve.cxx
@@ -243,6 +243,35 @@ static std::string steve_process_id(uint64_t pid, const 
steve_process *process)
        return std::format("PID {}", pid);
 }
 
+static std::string steve_process_token_stats(
+       const steve_process *process,
+       bool include_reserved = true)
+{
+       assert(process);
+
+       std::string ret = std::format("{} tokens held by process", 
process->tokens_held);
+       if (include_reserved)
+               ret += std::format(", token reserved: {}", 
process->token_reserved);
+       return ret;
+}
+
+static std::string steve_token_stats(
+       const steve_state *state,
+       const steve_process *process,
+       bool include_reserved = true,
+       bool include_load = true)
+{
+       assert(state);
+       assert(process);
+
+       std::string ret = std::format("{} left, {}",
+               state->tokens, steve_process_token_stats(process, 
include_reserved));
+       if (include_load && state->max_load_avg > 0)
+               ret += std::format(", load average = {:.3} (limit: {})",
+                       state->load_avg, state->max_load_avg);
+       return ret;
+}
+
 static void steve_give_token(steve_state *state, fuse_req_t req, uint64_t pid)
 {
        steve_process *process = &state->processes.at(pid);
@@ -252,22 +281,20 @@ static void steve_give_token(steve_state *state, 
fuse_req_t req, uint64_t pid)
                process->tokens_held++;
                process->token_reserved = false;
                if (state->verbose)
-                       std::print(stderr, "Giving reserved token 0x{:02x} to 
{}, {} left, {} tokens held by process\n",
-                                       token, steve_process_id(pid, process), 
state->tokens, process->tokens_held);
+                       std::print(stderr, "Giving reserved token 0x{:02x} to 
{}, {}\n",
+                               token, steve_process_id(pid, process),
+                               steve_token_stats(state, process, false, 
false));
                fuse_reply_buf(req, &token, 1);
                return;
        }
 
        state->tokens--;
        process->tokens_held++;
-       if (state->verbose) {
-               if (state->max_load_avg > 0)
-                       std::print(stderr, "Giving job token 0x{:02x} to {}, {} 
left, {} tokens held by process, token reserved: {}, load average = {:.3} 
(limit: {})\n",
-                                       token, steve_process_id(pid, process), 
state->tokens, process->tokens_held, process->token_reserved, state->load_avg, 
state->max_load_avg);
-               else
-                       std::print(stderr, "Giving job token 0x{:02x} to {}, {} 
left, {} tokens held by process, token reserved: {}\n",
-                                       token, steve_process_id(pid, process), 
state->tokens, process->tokens_held, process->token_reserved);
-       }
+       if (state->verbose)
+               std::print(stderr, "Giving job token 0x{:02x} to {}, {}\n",
+                       token,
+                       steve_process_id(pid, process),
+                       steve_token_stats(state, process));
        fuse_reply_buf(req, &token, 1);
 }
 
@@ -279,14 +306,10 @@ static void steve_reserve_token(steve_state *state, 
uint64_t pid)
 
        state->tokens--;
        process->token_reserved = true;
-       if (state->verbose) {
-               if (state->max_load_avg > 0)
-                       std::print(stderr, "Reserving job token for {}, {} 
left, {} tokens held by process, load average = {:.3} (limit: {})\n",
-                                       steve_process_id(pid, process), 
state->tokens, process->tokens_held, state->load_avg, state->max_load_avg);
-               else
-                       std::print(stderr, "Reserving job token for {}, {} 
left, {} tokens held by process\n",
-                                       steve_process_id(pid, process), 
state->tokens, process->tokens_held);
-       }
+       if (state->verbose)
+               std::print(stderr, "Reserving job token for {}, {}\n",
+                       steve_process_id(pid, process),
+                       steve_token_stats(state, process, false));
 
        /* TODO: we need to handle expiring reservations if client doesn't read 
*/
 }
@@ -537,12 +560,13 @@ static void steve_read(
                steve_process *process = &state->processes.at(fi->fh);
                if (token_avail == steve_token_availability::load_exceeded) {
                        std::print(stderr, "Load exceeded while {} requested 
token, waiting, {} tokens free, "
-                                       "{} tokens held by process, load 
average {:.3} >= {}\n",
-                                       steve_process_id(fi->fh, process), 
state->tokens, process->tokens_held,
+                                       "{}, load average {:.3} >= {}\n",
+                                       steve_process_id(fi->fh, process), 
state->tokens,
+                                       steve_process_token_stats(process, 
false),
                                        state->load_avg, state->max_load_avg);
                } else
-                       std::print(stderr, "No free job token for {}, waiting, 
{} tokens held by process\n",
-                                       steve_process_id(fi->fh, process), 
process->tokens_held);
+                       std::print(stderr, "No free job token for {}, waiting, 
{}\n",
+                                       steve_process_id(fi->fh, process), 
steve_process_token_stats(process, false));
        }
        fuse_req_interrupt_func(req, steve_interrupt, state);
 }
@@ -632,8 +656,9 @@ static void steve_write(
        state->tokens += size;
        process->tokens_held -= size;
        if (state->verbose)
-               std::print(stderr, "{} returned {} tokens, {} available now, {} 
tokens held by process, token reserved: {}\n",
-                               steve_process_id(fi->fh, process), size, 
state->tokens, process->tokens_held, process->token_reserved);
+               std::print(stderr, "{} returned {} tokens, {} available now, 
{}\n",
+                       steve_process_id(fi->fh, process), size, state->tokens,
+                       steve_process_token_stats(process));
        fuse_reply_write(req, size);
 
        /* Since we have jobs now, see if anyone's waiting */
@@ -659,12 +684,14 @@ static void steve_poll(
                        assert(state->max_load_avg > 0);
                        /* capped by load average */
                        std::print(stderr, "Load exceeded while {} requested 
token, waiting, {} tokens free, "
-                                       "{} tokens held by process, load 
average {:.3} >= {}\n",
-                                       steve_process_id(fi->fh, process), 
state->tokens, process->tokens_held,
+                                       "{}, load average {:.3} >= {}\n",
+                                       steve_process_id(fi->fh, process), 
state->tokens,
+                                       steve_process_token_stats(process, 
false),
                                        state->load_avg, state->max_load_avg);
                } else
-                       std::print(stderr, "{} requested poll, {} tokens 
available, {} tokens held by process\n",
-                                       steve_process_id(fi->fh, process), 
state->tokens, process->tokens_held);
+                       std::print(stderr, "{} requested poll, {} tokens 
available, {}\n",
+                                       steve_process_id(fi->fh, process), 
state->tokens,
+                                       steve_process_token_stats(process, 
false));
        }
 
        fuse_reply_poll(req, events);

Reply via email to