Contend for a single claim slot and turn the rejected count into a grant, queue, or reject remediation action.

Atomic Claim Remediation Report

AtomicClaimRemediationReport.scala
object Main {
  def main(args: Array[String]): Unit = {
    val requests = 
    val slotCapacity = 1
    var claimed = 0
    var rejected = 0
    for (i <- 1 to requests) {
      if (claimed < slotCapacity) {
        claimed = claimed + 1
      } else {
        rejected = rejected + 1
      }
    }

    var action = "grant"
    if (rejected == 1) {
      action = "queue"
    }
    if (rejected >= 2) {
      action = "reject"
    }

    println("requests=" + requests + " claimed=" + claimed + " rejected=" + rejected + " " + action)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val requests = 
    val slotCapacity = 1
    var claimed = 0
    var rejected = 0
    for (i <- 1 to requests) {
      if (claimed < slotCapacity) {
        claimed = claimed + 1
      } else {
        rejected = rejected + 1
      }
    }

    var action = "grant"
    if (rejected == 1) {
      action = "queue"
    }
    if (rejected >= 2) {
      action = "reject"
    }

    println("requests=" + requests + " claimed=" + claimed + " rejected=" + rejected + " " + action)
  }
}
object Main {
  def main(args: Array[String]): Unit = {
    val requests = 
    val slotCapacity = 1
    var claimed = 0
    var rejected = 0
    for (i <- 1 to requests) {
      if (claimed < slotCapacity) {
        claimed = claimed + 1
      } else {
        rejected = rejected + 1
      }
    }

    var action = "grant"
    if (rejected == 1) {
      action = "queue"
    }
    if (rejected >= 2) {
      action = "reject"
    }

    println("requests=" + requests + " claimed=" + claimed + " rejected=" + rejected + " " + action)
  }
}
claim contention The single claim slot and request count are scalars, so the claimed and rejected counts that drive the remediation action stay deterministic and free of atomic identity.