PSF-LoginServer/net/psforever/objects/guid/source/NumberSource.html

19 lines
47 KiB
HTML
Raw Normal View History

<!DOCTYPE html ><html><head><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/><title>PSF-LoginServer - master - net.psforever.objects.guid.source.NumberSource</title><meta content="PSF - LoginServer - master - net.psforever.objects.guid.source.NumberSource" name="description"/><meta content="PSF LoginServer master net.psforever.objects.guid.source.NumberSource" name="keywords"/><meta http-equiv="content-type" content="text/html; charset=UTF-8"/><link href="../../../../../lib/index.css" media="screen" type="text/css" rel="stylesheet"/><link href="../../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet"/><link href="../../../../../lib/print.css" media="print" type="text/css" rel="stylesheet"/><link href="../../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css"/><script type="text/javascript" src="../../../../../lib/jquery.min.js"></script><script type="text/javascript" src="../../../../../lib/index.js"></script><script type="text/javascript" src="../../../../../index.js"></script><script type="text/javascript" src="../../../../../lib/scheduler.js"></script><script type="text/javascript" src="../../../../../lib/template.js"></script><script type="text/javascript">/* this variable can be used by the JS to determine the path to the root document */
var toRoot = '../../../../../';</script></head><body><div id="search"><span id="doc-title">PSF-LoginServer - <span id="doc-version">master</span></span> <span class="close-results"><span class="left">&lt;</span> Back</span><div id="textfilter"><span class="input"><input autocapitalize="none" placeholder="Search" id="index-input" type="text" accesskey="/"/><i class="clear material-icons"></i><i id="search-icon" class="material-icons"></i></span></div></div><div id="search-results"><div id="search-progress"><div id="progress-fill"></div></div><div id="results-content"><div id="entity-results"></div><div id="member-results"></div></div></div><div id="content-scroll-container" style="-webkit-overflow-scrolling: touch;"><div id="content-container" style="-webkit-overflow-scrolling: touch;"><div id="subpackage-spacer"><div id="packages"><h1>Packages</h1><ul><li class="indented0 " name="_root_.root" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="_root_"></a><a id="root:_root_"></a> <span class="permalink"><a href="../../../../../index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../../../../index.html" title=""><span class="name">root</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../../../index.html" name="_root_" id="_root_" class="extype">root</a></dd></dl></div></li><li class="indented1 " name="_root_.net" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="net"></a><a id="net:net"></a> <span class="permalink"><a href="../../../../../net/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../../../index.html" title=""><span class="name">net</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../../../index.html" name="_root_" id="_root_" class="extype">root</a></dd></dl></div></li><li class="indented2 " name="net.psforever" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="psforever"></a><a id="psforever:psforever"></a> <span class="permalink"><a href="../../../../../net/psforever/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../../index.html" title=""><span class="name">psforever</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../../index.html" name="net" id="net" class="extype">net</a></dd></dl></div></li><li class="indented3 " name="net.psforever.objects" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="objects"></a><a id="objects:objects"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../../index.html" title=""><span class="name">objects</span></a></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd><a href="../../../index.html" name="net.psforever" id="net.psforever" class="extype">psforever</a></dd></dl></div></li><li class="indented4 " name="net.psforever.objects.guid" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="guid"></a><a id="guid:guid"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/index.html" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">package</span></span> <span class="symbol"><a href="../index.html" title=""><span cla
The numbers are considered to be exclusive.<br>
<br>
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 - <code>SecureKey</code> and <code>LoanedKey</code>.<br>
<br>
The purpose of a <code>NumberSource</code> is to help facilitate globally unique identifiers (GUID, pl. GUIDs).
</p></div><dl class="attributes block"><dt>Source</dt><dd><a href="https://github.com/psforever/PSF-LoginServer/blob/master//home/runner/work/PSF-LoginServer/PSF-LoginServer/src/main/scala/net/psforever/objects/guid/source/NumberSource.scala" target="_blank">NumberSource.scala</a></dd></dl><div class="toggleContainer"><div class="toggle block"><span>Linear Supertypes</span><div class="superTypes hiddenContent"><span name="scala.AnyRef" class="extype">AnyRef</span>, <span name="scala.Any" class="extype">Any</span></div></div></div><div class="toggleContainer"><div class="toggle block"><span>Known Subclasses</span><div class="subClasses hiddenContent"><a href="MaxNumberSource.html" name="net.psforever.objects.guid.source.MaxNumberSource" id="net.psforever.objects.guid.source.MaxNumberSource" class="extype">MaxNumberSource</a>, <a href="SpecificNumberSource.html" name="net.psforever.objects.guid.source.SpecificNumberSource" id="net.psforever.objects.guid.source.SpecificNumberSource" class="extype">SpecificNumberSource</a></div></div></div></div><div id="mbrsel"><div class="toggle"></div><div id="memberfilter"><i class="material-icons arrow"></i><span class="input"><input placeholder="Filter all members" id="mbrsel-input" type="text" accesskey="/"/></span><i class="clear material-icons"></i></div><div id="filterby"><div id="order"><span class="filtertype">Ordering</span><ol><li class="alpha in"><span>Alphabetic</span></li><li class="inherit out"><span>By Inheritance</span></li></ol></div><div class="ancestors"><span class="filtertype">Inherited<br/></span><ol id="linearization"><li class="in" name="net.psforever.objects.guid.source.NumberSource"><span>NumberSource</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li></ol></div><div class="ancestors"><span class="filtertype"></span><ol><li class="hideall out"><span>Hide All</span></li><li class="showall in"><span>Show All</span></li></ol></div><div id="visbl"><span class="filtertype">Visibility</span><ol><li class="public in"><span>Public</span></li><li class="protected out"><span>Protected</span></li></ol></div></div></div><div id="template"><div id="allMembers"><div class="values members"><h3>Abstract Value Members</h3><ol><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#clear" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="clear():List[net.psforever.objects.entity.IdentifiableEntity]"></a><a id="clear():List[IdentifiableEntity]"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#clear():List[net.psforever.objects.entity.IdentifiableEntity]" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">clear</span><span class="params">()</span><span class="result">: <span name="scala.List" class="extype">List</span>[<a href="../../entity/IdentifiableEntity.html" name="net.psforever.objects.entity.IdentifiableEntity" id="net.psforever.objects.entity.IdentifiableEntity" class="extype">IdentifiableEntity</a>]</span></span><p class="shortcomment cmt">Reset all number <code>Monitor</code>s so that their underlying number is not longer treated as assigned.</p><div class="fullcomment"><div class="comment cmt"><p>Reset all number <code>Monitor</code>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.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>a <code>List</code> of assignments maintained by all the currently-used number <code>Monitors</code></p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#countAvailable" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="countAvailable:Int"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#countAvailable:Int" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">countAvailable</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span></span><p class="shortcomment cmt">The count of numbers that can still be drawn.</p><div class="fullcomment"><div class="comment cmt"><p>The count of numbers that can still be drawn.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>the count</p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#countDangling" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="countDangling:Int"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#countDangling:Int" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">countDangling</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span></span><p class="shortcomment cmt">The count of numbers that can not be drawn but have not yet been assigned to an entity.</p><div class="fullcomment"><div class="comment cmt"><p>The count of numbers that can not be drawn but have not yet been assigned to an entity.
Could only ever be a non-zero count if the number of used keys is a non-zero count.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>the count</p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#countUsed" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="countUsed:Int"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#countUsed:Int" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">countUsed</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span></span><p class="shortcomment cmt">The count of numbers that can not be drawn.</p><div class="fullcomment"><div class="comment cmt"><p>The count of numbers that can not be drawn.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>the count</p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#get" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="get(obj:net.psforever.objects.entity.IdentifiableEntity):Option[net.psforever.objects.guid.key.SecureKey]"></a><a id="get(IdentifiableEntity):Option[SecureKey]"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#get(obj:net.psforever.objects.entity.IdentifiableEntity):Option[net.psforever.objects.guid.key.SecureKey]" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">get</span><span class="params">(<span name="obj">obj: <a href="../../entity/IdentifiableEntity.html" name="net.psforever.objects.entity.IdentifiableEntity" id="net.psforever.objects.entity.IdentifiableEntity" class="extype">IdentifiableEntity</a></span>)</span><span class="result">: <span name="scala.Option" class="extype">Option</span>[<a href="../key/SecureKey.html" name="net.psforever.objects.guid.key.SecureKey" id="net.psforever.objects.guid.key.SecureKey" class="extype">SecureKey</a>]</span></span><p class="shortcomment cmt">Produce an un-modifiable wrapper for the <code>Monitor</code> for this entity,
if the entity is discovered being represented in this source.</p><div class="fullcomment"><div class="comment cmt"><p>Produce an un-modifiable wrapper for the <code>Monitor</code> for this entity,
if the entity is discovered being represented in this source.</p></div><dl class="paramcmts block"><dt class="param">obj</dt><dd class="cmt"><p>the entity</p></dd><dt>returns</dt><dd class="cmt"><p>the wrapped <code>Monitor</code></p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#get" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="get(number:Int):Option[net.psforever.objects.guid.key.SecureKey]"></a><a id="get(Int):Option[SecureKey]"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#get(number:Int):Option[net.psforever.objects.guid.key.SecureKey]" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">get</span><span class="params">(<span name="number">number: <span name="scala.Int" class="extype">Int</span></span>)</span><span class="result">: <span name="scala.Option" class="extype">Option</span>[<a href="../key/SecureKey.html" name="net.psforever.objects.guid.key.SecureKey" id="net.psforever.objects.guid.key.SecureKey" class="extype">SecureKey</a>]</span></span><p class="shortcomment cmt">Produce an un-modifiable wrapper for the <code>Monitor</code> for this number.</p><div class="fullcomment"><div class="comment cmt"><p>Produce an un-modifiable wrapper for the <code>Monitor</code> for this number.</p></div><dl class="paramcmts block"><dt class="param">number</dt><dd class="cmt"><p>the number</p></dd><dt>returns</dt><dd class="cmt"><p>the wrapped <code>Monitor</code></p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#getAvailable" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="getAvailable(number:Int):Option[net.psforever.objects.guid.key.LoanedKey]"></a><a id="getAvailable(Int):Option[LoanedKey]"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#getAvailable(number:Int):Option[net.psforever.objects.guid.key.LoanedKey]" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">getAvailable</span><span class="params">(<span name="number">number: <span name="scala.Int" class="extype">Int</span></span>)</span><span class="result">: <span name="scala.Option" class="extype">Option</span>[<a href="../key/LoanedKey.html" name="net.psforever.objects.guid.key.LoanedKey" id="net.psforever.objects.guid.key.LoanedKey" class="extype">LoanedKey</a>]</span></span><p class="shortcomment cmt">Produce a modifiable wrapper for the <code>Monitor</code> for this number, only if the number has not been used.</p><div class="fullcomment"><div class="comment cmt"><p>Produce a modifiable wrapper for the <code>Monitor</code> for this number, only if the number has not been used.
The <code>Monitor</code> should be updated before being wrapped, if necessary.</p></div><dl class="paramcmts block"><dt class="param">number</dt><dd class="cmt"><p>the number</p></dd><dt>returns</dt><dd class="cmt"><p>the wrapped <code>Monitor</code>, or <code>None</code></p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#max" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="max:Int"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#max:Int" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">max</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span></span><p class="shortcomment cmt">The maximum number that can be produced by this source.</p><div class="fullcomment"><div class="comment cmt"><p>The maximum number that can be produced by this source.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>the max</p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#returnNumber" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="returnNumber(number:Int):Option[net.psforever.objects.entity.IdentifiableEntity]"></a><a id="returnNumber(Int):Option[IdentifiableEntity]"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#returnNumber(number:Int):Option[net.psforever.objects.entity.IdentifiableEntity]" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">returnNumber</span><span class="params">(<span name="number">number: <span name="scala.Int" class="extype">Int</span></span>)</span><span class="result">: <span name="scala.Option" class="extype">Option</span>[<a href="../../entity/IdentifiableEntity.html" name="net.psforever.objects.entity.IdentifiableEntity" id="net.psforever.objects.entity.IdentifiableEntity" class="extype">IdentifiableEntity</a>]</span></span><p class="shortcomment cmt">Consume the number of a <code>Monitor</code> and release that number from its previous assignment/use.</p><div class="fullcomment"><div class="comment cmt"><p>Consume the number of a <code>Monitor</code> and release that number from its previous assignment/use.</p></div><dl class="paramcmts block"><dt class="param">number</dt><dd class="cmt"><p>the number</p></dd><dt>returns</dt><dd class="cmt"><p>any object previously using this number</p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#size" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="size:Int"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#size:Int" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">abstract </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">size</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span></span><p class="shortcomment cmt">The count of numbers allocated to this source.</p><div class="fullcomment"><div class="comment cmt"><p>The count of numbers allocated to this source.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>the count</p></dd></dl></div></li><li class="indented0 " name="net.psforever.objects.guid.source.NumberSource#test" group="Ungrouped" fullComment="yes" data-isabs="true" visbl="pub"><a id="test(number:Int):Boolean"></a><a id="test(Int):Boolean"></a> <span class="permalink"><a href="../../../../../net/psforever/objects/guid/source/NumberSource.html#test(number:Int):Boolean" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span clas