6.50 release
6.50 Released 6/6/2017
- Added SimulatedMulticastDataIO, which simulates multicast
communication via directed unicast. Useful for communicating
multicast-style across a WiFi network, where real multicast
communication doesn't work very well. - hexterm now supports a "wifi" keyword, which if specified along
with the "udp=address:port" argument will replace the basic - Added some additional Inflate() and Deflate() methods
to the ZLibCodec class so that it can now write its
output into an existing ByteBuffer object rather than
allocating a new one from the byte-buffer-pool, if desired. - hexterm now accepts a "verifyspam" argument; if specified,
hexterm will check incoming packets to see if they match
the dummy-data format sent out by hexterm's "spamspersecond"
feature, and if they do not, it will log an error message. - Added a GetHardwareType() method to the
NetworkInterfaceInfo class. This method returns a
NETWORK_INTERFACE_HARDWARE_TYPE_* value indicating what
kind of network interface it is (e.g. Ethernet, WiFi, etc) - Added a GetNetworkHardwareTypeString() static method to
the NetworkInterfaceInfo class. This returns a human-readable
string describing the given NETWORK_INTERFACE_HARDWARE_TYPE_* - Added some MacOS/X-specific utility methods to the String class:
SetFromCFStringRef(), ToCFStringRef(), and a String constructor
method that takes a (const CFStringRef &) - The ip_address and IPAddressAndPort classes now implement
the PseudoFlattenable interface to allow for easier handling.
UDPSocketDataIO functionality with SimulatedMulticastDataIO,
for testing purposes. - Renamed the ip_address type to IPAddress, and made it a real
class (and not a typedef'd alias for uint32) even when
MUSCLE_AVOID_IPV6 is defined. ip_address is now a typedef'd
alias to IPAddress, for backwards compatibility with old code. - The various convenience methods that could be called on an
ip_address object (e.g. IsAddressIPv4(), IsAddressValid(),
IsAddressMulticast(), etc) are now methods in IPAddress instead. - AtomicCounter now uses std::atomic internally,
if MUSCLE_USE_CPLUSPLUS11 is defined. - PODSwapper and SwapContentsSwapper now check for the
corner-case where the two objects passed in are actually
the same object (and if so, they don't attempt a swap) - Added a GetSourceOfLastReadPacket() method to the DataIO interface.
- UDPSocketDataIO::GetSourceOfLastReadPacket() is now virtual.
- Moved the ip_address/IPAddress and IPAddressAndPort classes'
declarations out of NetworkUtilityFunctions.h and into IPAddress.h - Moved the NetworkInterfaceInfo class (and its associated
functions) out of NetworkUtilityFunctions.h and into
NetworkInterfaceInfo.h - Fixed several places in the codebase that were inappropriately
relying on CFStringGetCStringPtr() to return a non-NULL value,
when in fact it is documented to return NULL sometimes. - hexterm now exits gracefully when stdin is closed.