Produce a modifiable wrapper for the Monitor
for this number, only if the number has not been used.
Produce a modifiable wrapper for the Monitor
for this number, only if the number has not been used.
The Monitor
should be updated before being wrapped, if necessary.
the number
the wrapped Monitor
, or None
Reset all number Monitor
s so that their underlying number is not longer treated as assigned.
Reset all number Monitor
s so that their underlying number is not longer treated as assigned.
Perform some level of housecleaning to ensure that all dependencies are resolved in some manner.
This is the only way to free Monitors
that are marked as Restricted
.
a List
of assignments maintained by all the currently-used number Monitors
The count of numbers that can still be drawn.
The count of numbers that can still be drawn.
the count
The count of numbers that can not be drawn.
The count of numbers that can not be drawn.
the count
Numbers from this source may not longer be marked as Restricted
.
Numbers from this source may not longer be marked as Restricted
.
the List
of all numbers that have been restricted
Produce an un-modifiable wrapper for the Monitor
for this number.
Produce an un-modifiable wrapper for the Monitor
for this number.
the number
the wrapped Monitor
Produce a modifiable wrapper for the Monitor
for this number, only if the number has not been used.
Produce a modifiable wrapper for the Monitor
for this number, only if the number has not been used.
This wrapped Monitor
can only be assigned once and the number may not be Return
ed to this source.
the number
the wrapped Monitor
Consume the number of a Monitor
and release that number from its previous assignment/use.
Consume the number of a Monitor
and release that number from its previous assignment/use.
the number
any object previously using this number
The count of numbers allocated to this source.
The count of numbers allocated to this source.
the count
Consume a wrapped Monitor
and release its number from its previous assignment/use.
Consume a wrapped Monitor
and release its number from its previous assignment/use.
the Monitor
any object previously using this Monitor
Consume a wrapped Monitor
and release its number from its previous assignment/use.
Consume a wrapped Monitor
and release its number from its previous assignment/use.
the Monitor
any object previously using this Monitor
Is this number a member of this number source?
Is this number a member of this number source?
the number
true
, if it is a member; false
, otherwise
A
NumberSource
is considered a master "pool" of numbers from which all numbers are available to be drawn. The numbers are considered to be exclusive.The following are guidelines for implementing classes. The numbers allocated to this source are from zero up through positive integers. When a number is drawn from the pool, it is flagged internally and can not be selected for drawing again until the flag is removed. Some flagging states are allowed to restrict that number for the whole lifespan of the source. This internal flagging is maintained by a "monitor" that should not directly get exposed. Use the provided indirect referencing containers -
SecureKey
andLoanedKey
.The purpose of a
NumberSource
is to help facilitate globally unique identifiers (GUID, pl. GUIDs).