Class GuardDistribute

java.lang.Object
me.ahoo.cosid.machine.GuardDistribute
All Implemented Interfaces:
MachineIdDistribute
Direct Known Subclasses:
CosIdGuardDistribute

public class GuardDistribute extends Object implements MachineIdDistribute
  • Constructor Details

  • Method Details

    • distribute

      public @NonNull MachineState distribute(String namespace, int machineBit, InstanceId instanceId, Duration safeGuardDuration) throws MachineIdOverflowException
      Description copied from interface: MachineIdDistribute
      Distribute (allocate) a machine ID within the specified namespace.

      This method allocates a unique machine ID for the given instance within the specified namespace. The allocated ID is guaranteed to be unique within that namespace for the duration of its lease.

      The method returns a MachineState object containing the allocated machine ID and associated metadata.

      Specified by:
      distribute in interface MachineIdDistribute
      Parameters:
      namespace - The namespace for machine ID allocation
      machineBit - The number of bits to use for machine IDs
      instanceId - The instance identifier requesting the machine ID
      safeGuardDuration - The duration for safe guarding the allocation
      Returns:
      The machine state containing the allocated machine ID
      Throws:
      MachineIdOverflowException - if no more machine IDs are available
    • getLease

      public @NonNull MachineIdLease getLease(String namespace, InstanceId instanceId)
      The lease that keeps the distributed machine id usable, see MachineIdLease.
      Parameters:
      namespace - namespace
      instanceId - instance id
      Returns:
      the lease of the instance
    • getDistributed

      public @NonNull Set<NamespacedInstanceId> getDistributed()
      Every machine id distributed through this instance, whether or not a guarder is running, so that they can all be reverted on shutdown.
      Returns:
      a snapshot of the distributed instances