SimEthereal version 1.5.0
·
32 commits
to master
since this release
Bug fixes and some overhauls of internal processing.
Change log:
- Internally moved ZoneManager creation to the EtherealHost constructor
so that it could be accessed prior to EtherealHost service initialization. - Refactored ZoneManager to allow different internal ZoneRange implementations.
Renamed the old internal ZoneRange to OctZoneRange to denote that it can
track a maximum of eight zones per object (2x2x2). This limited objects
to never be bigger than a zone. - Modified ZoneManager to have a new internal DynamicZoneRange that can
support objects of virtually any size relative to zone size. (Subject
to positional bit resolution, etc.) - Added a (hopefully temporary) ZoneManager.setSupportLargeObjects() that
defaults to false. When true this will use the new DynamicZoneRange.
This defaults to false because the older (uglier) ZoneRange code has
had a LOT more real world testing. Note: the new code is actually way
cleaner and more elegant. - Modified the "received acks" watchdog in StateWriter to take message ID lag
into account. This should fix the cases where the exception would be
thrown for cases where client ACKs are just lagging by a wide margin. - Upgraded to SimMath 1.4.0 to get the new IntRangeSet for receved acks tracking.
- Converted the tracked ACK message ID sets to IntRangeSets for efficient storage
and processing. (During normal processing, ACK IDs will almost always be
a single contiguous range so a good candidate for IntRangeSet: one entry) - Fixed a bug in SentState message writing/receiving where more than 255 ACK
IDs was causing overflow and randomly lost acks. (Fixed by sending ranges
instead of every individual ACK set.) This also fixed a message size
overflow issue.