initial code repo
[stor4nfv.git] / src / ceph / src / dmclock / src / dmclock_recs.h
diff --git a/src/ceph/src/dmclock/src/dmclock_recs.h b/src/ceph/src/dmclock/src/dmclock_recs.h
new file mode 100644 (file)
index 0000000..f7a5aaa
--- /dev/null
@@ -0,0 +1,61 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+/*
+ * Copyright (C) 2017 Red Hat Inc.
+ */
+
+
+#pragma once
+
+
+#include <ostream>
+#include <assert.h>
+
+
+namespace crimson {
+  namespace dmclock {
+    using Counter = uint64_t;
+
+    enum class PhaseType { reservation, priority };
+
+    inline std::ostream& operator<<(std::ostream& out, const PhaseType& phase) {
+      out << (PhaseType::reservation == phase ? "reservation" : "priority");
+      return out;
+    }
+
+    struct ReqParams {
+      // count of all replies since last request; MUSTN'T BE 0
+      uint32_t delta;
+
+      // count of reservation replies since last request; MUSTN'T BE 0
+      uint32_t rho;
+
+      ReqParams(uint32_t _delta, uint32_t _rho) :
+       delta(_delta),
+       rho(_rho)
+      {
+       assert(0 != delta && 0 != rho && rho <= delta);
+      }
+
+      ReqParams() :
+       ReqParams(1, 1)
+      {
+       // empty
+      }
+
+      ReqParams(const ReqParams& other) :
+       delta(other.delta),
+       rho(other.rho)
+      {
+       // empty
+      }
+
+      friend std::ostream& operator<<(std::ostream& out, const ReqParams& rp) {
+       out << "ReqParams{ delta:" << rp.delta <<
+         ", rho:" << rp.rho << " }";
+       return out;
+      }
+    }; // class ReqParams
+  }
+}