Latest release of The Server Framework: 7.3
Version 7.3 of The Server Framework was released today.
This release includes bug fixes and new code.
As always, see the release notes here, for full details of all changes.
Bug fixes:
- Fixed a bug with
JetByteTools::Core::CCallbackTimerWheelwhich would show up if the time provider was providing ticks at a different granularity than the granularity of the wheel. - Fixed a bug in
CDatagramSocketConnectionManagerandCDatagramSocketServerwhere the buffers returned in write and sendTo completion callbacks had an incorrect number of bytes set as ‘used’.
Changes:
- Clearly identify any open source software used by the framework and make it easy to disable it or see the relevant license details.
- Preparations for making the code compile on other platforms.
- More libraries now require that you include their Admin.h files in your Config.h file if you wish to use them.
- Removed some code used during testing and debugging of the framework where the code is either unsupported in the forthcoming 8.0 release or broken/untested/unused.
- Added support for a new method of dynamic object leak tracking.
- Removed the need for WinsockWrapper.h any reference to this header should be removed.
- Rationalised the nascent dynamic debug log functionality to bridge the gaps between the 6.9.x customer specific code and the 8.0 (different customer) specific code to something that works in a way that works for everyone. Framework libraries now often have a
CDebugLogclass which includes their debug log functionality and this can be dynamically adjusted during runtime. - Added
CAllFrameworkDebugLogswhich automatically locates and initialises all available framework dynamic debug logs. - Made it possible to turn off a
Output()andOutputEx()debug log output by settingJETBYTE_CORE_ENABLE_DEBUG_TRACE_OUTPUTto 0 in your Config.h - Added
CCachedValueTickCountProviderwhich only queries the current tick count on the first call and then returns the same value. - Added
CFixedValueTickCountProviderwhich returns the value given to it in its constructor. - Added
CHighResolutionTickCountProviderwhich uses the highest resolution tick count source for the operating system. - Moved
JetByteTools/IOTools/Data.htoJetByteTools/Core/Data.h - Added
TDynamicObjectTrackerfor use by derived classes that can track leaks in dynamically allocated object instances. - Added
CDynamicObjectTrackerCollectionwhich allows you to report on leaked objects. - Changed the
JetByteTools::Core::IQueueTimersinterface so that implementations can report back to the caller if the operation performed has changed the first timer that will expire. This allows for an optimisation to threaded timer queues so that they need not wake the timer thread if the next timer to expire has not changed. - Added
CThreadBasewhich deals with various thread event listeners in a thread-implementation agnostic manner. - Thread pools now work in terms of
IAsyncWorkItemrather thanOVERLAPPEDas this makes cross platform code easier. - Expanded the functionality of
IMonitorThreadPoolso that all thread pools can now be monitored by the same interface. - Added non-throwing, bool-returning, “try” operations to
TReusableIdManager CSimpleMessageLogcan now include thread names in the log information.CActivatableObjectcan now have data added using an array ofDatastructures.CActivatableObjectcan now have a custom command processor callback function added with each command.- Added
CActivatableObject::CommandWrapperExwhich is a wrapper that deals in terms of arrays ofDatastructures. - Added
CActivatableObject::CommandProcessorCallback::OnActivatableObjectProcessCommandEx()which allows you to process a ‘pass through’ command that uses arrays ofDatastructures as is rather than as a contiguous single block of data. - Added
CActivatableObject::ProcessingFlags::AllowRecursiveProcessing - Added
TOptionallyOwnedPointer - Added
CQueueSpaceNotifier - Added
CRateLimiter - Added
CThreadSafeRingBufferWorkQueue - Added
CThreadSafeRingBufferWorkPool - Added
CFiberLocalStorage - Added
CMutex - Added
CPerformanceCounterMonitor - Added
JETBYTE_WIN32_DEPRECATE_OPTEXwhich defaults to 1. - Removed the embedded
WSABUFstructure from theIBufferinterface. This is only required when the I/O call is issued and does not need to exist after the function call returns and so does not need to be part of the buffer itself. This also removes the need for theSetupXmethods that were previously called prior or executing I/O operations. - Added
IBuffer:MakeSpaceAtFrontIfPossible() - Added
JETBYTE_IO_DEPRECATE_BUFFER_USER_DATAwhich defaults to 0. - Added
JETBYTE_IO_DEPRECATE_SEQUENCED_BUFFER_COLLECTIONwhich defaults to 0. - Added
JETBYTE_IO_DEPRECATE_BUFFER_CHAIN_CUSTOM_BUFFER_INDEXwhich defaults to 0. - Added
CBufferFacadeOnRawMemory - Added
TBufferPool - Added
CCustomPoolBufferAllocator - Added
IAssociateDeviceWithIOSubSystem - Added
IAllocateBuffers::AllocateBuffersandIAllocateBuffers::AllocateBuffersForBytes - Added
CBufferChain::CopyChainIntoBufferandCBufferChain::CopyDataIntoChain - Added lots of wrappers for various aspects of OpenSSL that are used by SRTP and streaming media.
- Added
CSharedMemoryMutexPerformanceDataBlockwhich can be used when the Optex version has been deprecated. This version is also more reliable as it can’t be left orphaned. - Added
IAddress::IsWildcardAddress() - Adjusted how the
CAddressIPv4constructor works with the supplied dottedIPorName string, it now tries to convert names if it can, rather than just assuming it was a dotted ip… - Adjusted how the
CAddressIPv4constructor works with the supplied addressAsString string, it now tries to convert names if it can, rather than just assuming it was a dotted ip… - Adjusted how the
CAddressIPv6constructor works with the supplied addressAsString string, it now tries to convert names if it can, ratherthan just assuming it was a dotted ip… - Added
CNetworkInterfaceAddresseswhich is now used to list available interfaces rather than using the zero argument version ofCAddressInfo, which has been removed.