Browse Source

Helper to log chan scheduler_states as strings not ints

Matt Traudt 6 years ago
parent
commit
07898fb2a6
1 changed files with 22 additions and 2 deletions
  1. 22 2
      src/or/scheduler.c

+ 22 - 2
src/or/scheduler.c

@@ -198,6 +198,24 @@ get_scheduler_type_string(scheduler_types_t type)
   }
 }
 
+/** Returns human readable string for the given channel scheduler state. */
+static const char *
+get_scheduler_state_string(int scheduler_state)
+{
+  switch (scheduler_state) {
+  case SCHED_CHAN_IDLE:
+    return "IDLE";
+  case SCHED_CHAN_WAITING_FOR_CELLS:
+    return "WAITING_FOR_CELLS";
+  case SCHED_CHAN_WAITING_TO_WRITE:
+    return "WAITING_TO_WRITE";
+  case SCHED_CHAN_PENDING:
+    return "PENDING";
+  default:
+    return "(invalid)";
+  }
+}
+
 /**
  * Scheduler event callback; this should get triggered once per event loop
  * if any scheduling work was created during the event loop.
@@ -365,8 +383,10 @@ set_scheduler(void)
 /** Helper that logs channel scheduler_state changes. Use this instead of
  * setting scheduler_state directly. */
 void scheduler_set_channel_state(channel_t *chan, int new_state){
-  log_debug(LD_SCHED, "chan %s changed from scheduler state %d to %d",
-      chan->global_identifier, chan->scheduler_state, new_state);
+  log_debug(LD_SCHED, "chan %" PRIu64 " changed from scheduler state %s to %s",
+      chan->global_identifier,
+      get_scheduler_state_string(chan->scheduler_state),
+      get_scheduler_state_string(new_state));
   chan->scheduler_state = new_state;
 }