PSF-LoginServer/net/psforever/login/PacketCodingActor.html

47 lines
71 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.login.PacketCodingActor</title><meta content="PSF - LoginServer - master - net.psforever.login.PacketCodingActor" name="description"/><meta content="PSF LoginServer master net.psforever.login.PacketCodingActor" 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.login" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="login"></a><a id="login:login"></a> <span class="permalink"><a href="../../../net/psforever/login/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">login</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.login.psadmin" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="psadmin"></a><a id="psadmin:psadmin"></a> <span class="permalink"><a href="../../../net/psforever/login/psadmin/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="psadmin/index.html" title=""><span class="name">psadmin</span></a></span><div class="fullcomment"><dl class="attribute
accept packets and transform them into a sequence of data (encoding), and
accept a sequence of data and transform it into s packet (decoding).<br>
<br>
Following the standardization of the <code>SessionRouter</code> pipeline, the throughput of this <code>Actor</code> has directionality.
The "network," where the encoded data comes and goes, is assumed to be <code>leftRef</code>.
The "simulation", where the decoded packets come and go, is assumed to be <code>rightRef</code>.
<code>rightRef</code> can accept a sequence that looks like encoded data but it will merely pass out the same sequence.
Likewise, <code>leftRef</code> accepts decoded packets but merely ejects the same packets without doing any work on them.
The former functionality is anticipated.
The latter functionality is deprecated.<br>
<br>
Encoded data leaving the <code>Actor</code> (<code>leftRef</code>) is limited by an upper bound capacity.
Sequences can not be larger than that bound or else they will be dropped.
This maximum transmission unit (MTU) is used to divide the encoded sequence into chunks of encoded data,
re-packaged into nested <code>ControlPacket</code> units, and each unit encoded.
The outer packaging is numerically consistent with a <code>subslot</code> that starts counting once the simulation starts.
The client is very specific about the <code>subslot</code> number and will reject out-of-order packets.
It resets to 0 each time this <code>Actor</code> starts up and the client reflects this functionality.
</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/login/PacketCodingActor.scala" target="_blank">PacketCodingActor.scala</a></dd></dl><div class="toggleContainer"><div class="toggle block"><span>Linear Supertypes</span><div class="superTypes hiddenContent"><a href="../../../akka/actor/MDCContextAware.html" name="akka.actor.MDCContextAware" id="akka.actor.MDCContextAware" class="extype">MDCContextAware</a>, <span name="akka.actor.ActorLogging" class="extype">ActorLogging</span>, <span name="akka.actor.Actor" class="extype">Actor</span>, <span name="scala.AnyRef" class="extype">AnyRef</span>, <span name="scala.Any" class="extype">Any</span></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.login.PacketCodingActor"><span>PacketCodingActor</span></li><li class="in" name="akka.actor.MDCContextAware"><span>MDCContextAware</span></li><li class="in" name="akka.actor.ActorLogging"><span>ActorLogging</span></li><li class="in" name="akka.actor.Actor"><span>Actor</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 id="constructors" class="members"><h3>Instance Constructors</h3><ol><li class="indented0 " name="net.psforever.login.PacketCodingActor#&lt;init&gt;" group="Ungrouped" fullComment="no" data-isabs="false" visbl="pub"><a id="&lt;init&gt;():net.psforever.login.PacketCodingActor"></a><a id="&lt;init&gt;:PacketCodingActor"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#&lt;init&gt;():net.psforever.login.PacketCodingActor" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">new</span></span> <span class="symbol"><span class="name">PacketCodingActor</span><span class="params">()</span></span></li></ol></div><div id="types" class="types members"><h3>Type Members</h3><ol><li class="indented0 " name="akka.actor.Actor.Receive" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="Receive=akka.actor.Actor.Receive"></a><a id="Receive:Receive"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#Receive=akka.actor.Actor.Receive" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">type</span></span> <span class="symbol"><span class="name">Receive</span><span class="result alias"> = <span name="scala.PartialFunction" class="extype">PartialFunction</span>[<span name="scala.Any" class="extype">Any</span>, <span name="scala.Unit" class="extype">Unit</span>]</span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>Actor</dd></dl></div></li></ol></div><div class="values members"><h3>Value Members</h3><ol><li class="indented0 " name="scala.AnyRef#!=" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="!=(x$1:Any):Boolean"></a><a id="!=(Any):Bo
Increment the <code>subslot</code> for the next time it is needed.</p></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>a <code>16u</code> number starting at 0</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#UnmarshalInnerPacket" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="UnmarshalInnerPacket(data:scodec.bits.ByteVector,description:String):Unit"></a><a id="UnmarshalInnerPacket(ByteVector,String):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#UnmarshalInnerPacket(data:scodec.bits.ByteVector,description:String):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">UnmarshalInnerPacket</span><span class="params">(<span name="data">data: <span name="scodec.bits.ByteVector" class="extype">ByteVector</span></span>, <span name="description">description: <span name="scala.Predef.String" class="extype">String</span></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt">Transform data into a container packet and re-submit that container to the process that handles the packet.</p><div class="fullcomment"><div class="comment cmt"><p>Transform data into a container packet and re-submit that container to the process that handles the packet.</p></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>the packet data</p></dd><dt class="param">description</dt><dd class="cmt"><p>an explanation of the input <code>data</code></p></dd></dl></div></li><li class="indented0 " name="akka.actor.Actor#aroundPostRestart" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="prt"><a id="aroundPostRestart(reason:Throwable):Unit"></a><a id="aroundPostRestart(Throwable):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#aroundPostRestart(reason:Throwable):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">aroundPostRestart</span><span class="params">(<span name="reason">reason: <span name="scala.Throwable" class="extype">Throwable</span></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Attributes</dt><dd>protected[<a href="../../../akka/index.html" name="akka" id="akka" class="extype">akka</a>] </dd><dt>Definition Classes</dt><dd>Actor</dd><dt>Annotations</dt><dd><span class="name">@InternalApi</span><span class="args">()</span> </dd></dl></div></li><li class="indented0 " name="akka.actor.Actor#aroundPostStop" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="prt"><a id="aroundPostStop():Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#aroundPostStop():Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">aroundPostStop</span><span class="params">()</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Attributes</dt><dd>protected[<a href="../../../akka/index.html" name="akka" id="akka" class="extype">akka</a>] </dd><dt>Definition Classes</dt><dd>Actor</dd><dt>Annotations</dt><dd><span class="name">@InternalApi</span><span class="args">()</span> </dd></dl></div></li><li class="indented0 " name="akka.actor.Actor#aroundPreRestart" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="prt"><a id="aroundPreRestart(reason:Throwable,message:Option[Any]):Unit"></a><a id="aroundPreRestart(Throwable,Option[Any]):Unit"></a> <span class="permalink"><a href=".
Send it (towards the network) upon successful encoding.</p></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>an encoded packet</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#handleBundlePacket" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="handleBundlePacket(vec:Vector[scodec.bits.ByteVector]):Unit"></a><a id="handleBundlePacket(Vector[ByteVector]):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#handleBundlePacket(vec:Vector[scodec.bits.ByteVector]):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">handleBundlePacket</span><span class="params">(<span name="vec">vec: <span name="scala.Vector" class="extype">Vector</span>[<span name="scodec.bits.ByteVector" class="extype">ByteVector</span>]</span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt">Accept a <code>Vector</code> of encoded packets and re-package them.</p><div class="fullcomment"><div class="comment cmt"><p>Accept a <code>Vector</code> of encoded packets and re-package them.
The normal order is to package the elements of the vector into a <code>MultiPacketEx</code>.
If the vector only has one element, it will get packaged by itself in a <code>SlottedMetaPacket</code>.
If that one element risks being too big for the MTU, however, it will be handled off to be split.
Splitting should preserve <code>Subslot</code> ordering with the rest of the bundling.</p></div><dl class="paramcmts block"><dt class="param">vec</dt><dd class="cmt"><p>a specific number of byte streams</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#handleBundlePacket" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="handleBundlePacket(bundle:List[net.psforever.packet.PlanetSidePacket]):Unit"></a><a id="handleBundlePacket(List[PlanetSidePacket]):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#handleBundlePacket(bundle:List[net.psforever.packet.PlanetSidePacket]):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">handleBundlePacket</span><span class="params">(<span name="bundle">bundle: <span name="scala.List" class="extype">List</span>[<a href="../packet/PlanetSidePacket.html" name="net.psforever.packet.PlanetSidePacket" id="net.psforever.packet.PlanetSidePacket" class="extype">PlanetSidePacket</a>]</span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt">Accept a <code>List</code> of packets and sequentially re-package the elements from the list into multiple container packets.<br>
<br>
The original packets are encoded then paired with their encoding lengths plus extra space to prefix the length.</p><div class="fullcomment"><div class="comment cmt"><p>Accept a <code>List</code> of packets and sequentially re-package the elements from the list into multiple container packets.<br>
<br>
The original packets are encoded then paired with their encoding lengths plus extra space to prefix the length.
Encodings from these pairs are drawn from the list until into buckets that fit a maximum byte stream length.
The size limitation on any bucket is the MTU limit.
less by the base sizes of <code>MultiPacketEx</code> (2) and of <code>SlottedMetaPacket</code> (4).</p></div><dl class="paramcmts block"><dt class="param">bundle</dt><dd class="cmt"><p>the packets to be bundled</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#handleControlPacket" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="handleControlPacket(container:net.psforever.packet.PlanetSidePacketContainer,packet:net.psforever.packet.PlanetSideControlPacket):Unit"></a><a id="handleControlPacket(PlanetSidePacketContainer,PlanetSideControlPacket):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#handleControlPacket(container:net.psforever.packet.PlanetSidePacketContainer,packet:net.psforever.packet.PlanetSideControlPacket):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">handleControlPacket</span><span class="params">(<span name="container">container: <a href="../packet/PlanetSidePacketContainer.html" name="net.psforever.packet.PlanetSidePacketContainer" id="net.psforever.packet.PlanetSidePacketContainer" class="extype">PlanetSidePacketContainer</a></span>, <span name="packet">packet: <a href="../packet/PlanetSideControlPacket.html" name="net.psforever.packet.PlanetSideControlPacket" id="net.psforever.packet.PlanetSideControlPacket" class="extype">PlanetSideControlPacket</a></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt">Process a control packet or determine that it does not need to be processed at this level.</p><div class="fullcomment"><div class="comment cmt"><p>Process a control packet or determine that it does not need to be processed at this level.
Primarily, if the packet is of a type that contains another packet that needs be be unmarshalled,
that/those packet must be unwound.<br>
<br>
The subslot information is used to identify these nested packets after arriving at their destination,
to establish order for sequential packets and relation between divided packets.</p></div><dl class="paramcmts block"><dt class="param">container</dt><dd class="cmt"><p>the original container packet</p></dd><dt class="param">packet</dt><dd class="cmt"><p>the packet that was extracted from the container</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#handlePacketContainer" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="handlePacketContainer(container:net.psforever.packet.PlanetSidePacketContainer):Unit"></a><a id="handlePacketContainer(PlanetSidePacketContainer):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#handlePacketContainer(container:net.psforever.packet.PlanetSidePacketContainer):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">handlePacketContainer</span><span class="params">(<span name="container">container: <a href="../packet/PlanetSidePacketContainer.html" name="net.psforever.packet.PlanetSidePacketContainer" id="net.psforever.packet.PlanetSidePacketContainer" class="extype">PlanetSidePacketContainer</a></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt"> Sort and redirect a container packet bound for the server by type of contents.</p><div class="fullcomment"><div class="comment cmt"><p> Sort and redirect a container packet bound for the server by type of contents.
<code>GamePacket</code> objects can just onwards without issue.
<code>ControlPacket</code> objects may need to be dequeued.
All other container types are invalid.</p></div><dl class="paramcmts block"><dt class="param">container</dt><dd class="cmt"><p>the container packet</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#handleSplitPacket" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="handleSplitPacket(data:scodec.bits.ByteVector):Unit"></a><a id="handleSplitPacket(ByteVector):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#handleSplitPacket(data:scodec.bits.ByteVector):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">handleSplitPacket</span><span class="params">(<span name="data">data: <span name="scodec.bits.ByteVector" class="extype">ByteVector</span></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt">Accept <code>ByteVector</code> data, representing a <code>ControlPacket</code>, and split it into chunks.</p><div class="fullcomment"><div class="comment cmt"><p>Accept <code>ByteVector</code> data, representing a <code>ControlPacket</code>, and split it into chunks.
The chunks should not be blocked by the MTU.
Send each chunk (towards the network) as it is converted.</p></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p><code>ByteVector</code> data to be split</p></dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#handleSplitPacket" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="handleSplitPacket(cont:net.psforever.packet.ControlPacket):Unit"></a><a id="handleSplitPacket(ControlPacket):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#handleSplitPacket(cont:net.psforever.packet.ControlPacket):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">handleSplitPacket</span><span class="params">(<span name="cont">cont: <a href="../packet/ControlPacket.html" name="net.psforever.packet.ControlPacket" id="net.psforever.packet.ControlPacket" class="extype">ControlPacket</a></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><p class="shortcomment cmt">Transform a <code>ControlPacket</code> into <code>ByteVector</code> data for splitting.</p><div class="fullcomment"><div class="comment cmt"><p>Transform a <code>ControlPacket</code> into <code>ByteVector</code> data for splitting.</p></div><dl class="paramcmts block"><dt class="param">cont</dt><dd class="cmt"><p>the original <code>ControlPacket</code></p></dd></dl></div></li><li class="indented0 " name="scala.AnyRef#hashCode" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="hashCode():Int"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#hashCode():Int" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">hashCode</span><span class="params">()</span><span class="result">: <span name="scala.Int" class="extype">Int</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>AnyRef → Any</dd><dt>Annotations</dt><dd><span class="name">@native</span><span class="args">()</span> </dd></dl></div></li><li class="indented0 " name="scala.Any#isInstanceOf" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="isInstanceOf[T0]:Boolean"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#isInstanceOf[T0]:Boolean" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">final </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span name="scala.Boolean" class="extype">Boolean</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>Any</dd></dl></div></li><li class="indented0 " name="akka.actor.ActorLogging#log" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="log:akka.event.LoggingAdapter"></a><a id="log:LoggingAdapter"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#log:akka.event.LoggingAdapter" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">log</span><span class="result">: <span name="akka.event.LoggingAdapter" class="extype">LoggingAdapter</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>ActorLogging</dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#mtuLimit" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="mtuLimit(msg:scodec.bits.ByteVector):Unit"></a><a id="mtuLimit(ByteVector):Unit"></a
If it is larger than the MTU, divide it up and re-package the sections.
Otherwise, send the data out like normal.</p></div><dl class="paramcmts block"><dt class="param">msg</dt><dd class="cmt"><p>the encoded packet data</p></dd></dl></div></li><li class="indented0 " name="scala.AnyRef#ne" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="ne(x$1:AnyRef):Boolean"></a><a id="ne(AnyRef):Boolean"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#ne(x$1:AnyRef):Boolean" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">final </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span name="scala.AnyRef" class="extype">AnyRef</span></span>)</span><span class="result">: <span name="scala.Boolean" class="extype">Boolean</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>AnyRef</dd></dl></div></li><li class="indented0 " name="scala.AnyRef#notify" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="notify():Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#notify():Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">final </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">notify</span><span class="params">()</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd><span class="name">@native</span><span class="args">()</span> </dd></dl></div></li><li class="indented0 " name="scala.AnyRef#notifyAll" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="notifyAll():Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#notifyAll():Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier">final </span> <span class="kind">def</span></span> <span class="symbol"><span class="name">notifyAll</span><span class="params">()</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd><span class="name">@native</span><span class="args">()</span> </dd></dl></div></li><li class="indented0 " name="akka.actor.Actor#postRestart" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="postRestart(reason:Throwable):Unit"></a><a id="postRestart(Throwable):Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#postRestart(reason:Throwable):Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">postRestart</span><span class="params">(<span name="reason">reason: <span name="scala.Throwable" class="extype">Throwable</span></span>)</span><span class="result">: <span name="scala.Unit" class="extype">Unit</span></span></span><div class="fullcomment"><dl class="attributes block"><dt>Definition Classes</dt><dd>Actor</dd><dt>Annotations</dt><dd><span class="name">@throws</span><span class="args">(<span><span class="symbol">classOf[java.lang.Exception]</span></span>)</span> </dd></dl></div></li><li class="indented0 " name="net.psforever.login.PacketCodingActor#postStop" group="Ungrouped" fullComment="yes" data-isabs="false" visbl="pub"><a id="postStop():Unit"></a> <span class="permalink"><a href="../../../net/psforever/login/PacketCodingActor.html#postStop():Unit" title="Permalink"><i class="material-icons"></i></a></span> <span class="modifier_kind"><span class="modifier"></span> <span class="kind">def</span></span> <span class="symbol"><span class="name">postStop</span>