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::CCallbackTimerWheel
which would show up if the time provider was providing ticks at a different granularity than the granularity of the wheel. - Fixed a bug in
CDatagramSocketConnectionManager
andCDatagramSocketServer
where 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
CDebugLog
class which includes their debug log functionality and this can be dynamically adjusted during runtime. - Added
CAllFrameworkDebugLogs
which 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_OUTPUT
to 0 in your Config.h - Added
CCachedValueTickCountProvider
which only queries the current tick count on the first call and then returns the same value. - Added
CFixedValueTickCountProvider
which returns the value given to it in its constructor. - Added
CHighResolutionTickCountProvider
which uses the highest resolution tick count source for the operating system. - Moved
JetByteTools/IOTools/Data.h
toJetByteTools/Core/Data.h
- Added
TDynamicObjectTracker
for use by derived classes that can track leaks in dynamically allocated object instances. - Added
CDynamicObjectTrackerCollection
which allows you to report on leaked objects. - Changed the
JetByteTools::Core::IQueueTimers
interface 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
CThreadBase
which deals with various thread event listeners in a thread-implementation agnostic manner. - Thread pools now work in terms of
IAsyncWorkItem
rather thanOVERLAPPED
as this makes cross platform code easier. - Expanded the functionality of
IMonitorThreadPool
so that all thread pools can now be monitored by the same interface. - Added non-throwing, bool-returning, “try” operations to
TReusableIdManager
CSimpleMessageLog
can now include thread names in the log information.CActivatableObject
can now have data added using an array ofData
structures.CActivatableObject
can now have a custom command processor callback function added with each command.- Added
CActivatableObject::CommandWrapperEx
which is a wrapper that deals in terms of arrays ofData
structures. - Added
CActivatableObject::CommandProcessorCallback::OnActivatableObjectProcessCommandEx()
which allows you to process a ‘pass through’ command that uses arrays ofData
structures 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_OPTEX
which defaults to 1. - Removed the embedded
WSABUF
structure from theIBuffer
interface. 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 theSetupX
methods that were previously called prior or executing I/O operations. - Added
IBuffer:MakeSpaceAtFrontIfPossible()
- Added
JETBYTE_IO_DEPRECATE_BUFFER_USER_DATA
which defaults to 0. - Added
JETBYTE_IO_DEPRECATE_SEQUENCED_BUFFER_COLLECTION
which defaults to 0. - Added
JETBYTE_IO_DEPRECATE_BUFFER_CHAIN_CUSTOM_BUFFER_INDEX
which defaults to 0. - Added
CBufferFacadeOnRawMemory
- Added
TBufferPool
- Added
CCustomPoolBufferAllocator
- Added
IAssociateDeviceWithIOSubSystem
- Added
IAllocateBuffers::AllocateBuffers
andIAllocateBuffers::AllocateBuffersForBytes
- Added
CBufferChain::CopyChainIntoBuffer
andCBufferChain::CopyDataIntoChain
- Added lots of wrappers for various aspects of OpenSSL that are used by SRTP and streaming media.
- Added
CSharedMemoryMutexPerformanceDataBlock
which 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
CAddressIPv4
constructor 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
CAddressIPv4
constructor 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
CAddressIPv6
constructor works with the supplied addressAsString string, it now tries to convert names if it can, ratherthan just assuming it was a dotted ip… - Added
CNetworkInterfaceAddresses
which is now used to list available interfaces rather than using the zero argument version ofCAddressInfo
, which has been removed.