Skip to content

SimEthereal version 1.5.0

Compare
Choose a tag to compare
@pspeed42 pspeed42 released this 27 Apr 21:02
· 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.