Latest release of The Server Framework: 6.9

Version 6.9 of The Server Framework was released today.

This release includes lots of code change due to: the removal of support for Visual Studio 2012 and the results of lots of static analysis.

As always, see the release notes here, for full details of all changes.

Bug fixes:

  • Bug fix to JetByteTools::Win32::TAddressOrderedMultiLock::Unlock() which was not setting the ’locked’ flag correctly and so could lead to locks being unlocked multiple times.
  • Bug fix to JetByteTools::Win32::CEventOwner to correctly handle the ’nothing’ flag.
  • Bug fix to JetByteTools::IO::CBuffer::DuplicateBuffer() so that it allocates a buffer of suitable size when a ‘custom sized buffer’ is being duplicated.
  • Bug fix to JetByteTools::IO::CBufferAllocator::InternalAllocateCustomSizedBuffer() so that it correctly calls OnBufferAllocated() on the monitoring interface.

Breaking changes:

  • Dropped support for Visual Studio 2012.
  • Deprecated Hixie76 WebSockets, JetByteTools::Win32::CRegistryConfiguration, some methods on JetByteTools::IO::CBufferChain and JetByteTools::IO::CBufferProcessor.
  • Removed JetByteTools::Win32::ICollectableThreadPool, JetByteTools::Win32::CThreadPoolCollection, JetByteTools::Win32::TLinkedClass, JetByteTools::Win32::TSingleton, JetByteTools::IO::CBufferList, JetByteTools::IO::CInOrderBufferList, JetByteTools::IO::CNonPooledBuffer, JetByteTools::IO::CSequentialBufferList, JetByteTools::IO::CSmartBufferList, JetByteTools::IO::CLockFreeBuffer and JetByteTools::IO::CLockFreeBufferAllocator.
  • Removed the concept of “Multi buffer handles” and JetByteTools::IO::IAllocateMultiBufferHandles, JetByteTools::IO::CMultiBufferHandle and JetByteTools::IO::CMultiBufferHandleAllocator.
  • Changes to JetByteTools::Win32::IMonitorThreadPool. Both JetByteTools::Win32::IMonitorThreadPool::OnThreadPoolProcessingStarted() and JetByteTools::Win32::IMonitorThreadPool::OnThreadPoolProcessingStopped() have a new parameter passed to them dataAvailable a bool which is used with the functionality that was added in 6.6.5 whereby JetByteTools::Win32::IIOCPWorkerThreadCallback::ProcessEx() can return true to cause JetByteTools::Win32::IIOCPWorkerThreadCallback::NoItemsToProcess() to be called when the queue is empty. The addition of this bool allows monitoring code to differentiate between calls that result in processing and calls that do not. This is especially important if you are monitoring the number of items in the queue by tracking them as they go in and when their processing begins. This change results in corresponding changes to the following classes: JetByteTools::Win32::CNullThreadPoolMonitor, JetByteTools::Win32::IManageThreadPoolThreads, JetByteTools::Win32::CThreadPool and JetByteTools::Win32::CThreadPoolEx.
  • Changes to JetByteTools::IO::IAllocateBuffer, JetByteTools::IO::IAllocateBufferHandles, JetByteTools::IO::IAllocateBuffers, JetByteTools::IO::IManageBufferHandleLifeCycle, JetByteTools::IO::IManageBufferLifeCycle, JetByteTools::IO::IPoolBuffers and JetByteTools::IO::IBuffer all changed to return JetByteTools::IO::CSmartBuffer rather than raw pointers.
  • Methods on JetByteTools::IO::IBufferChain and JetByteTools::IO::IUnsortedBufferChain that do not take JetByteTools::IO::CSmartBuffer have been deprecated. Some additional methods have also been removed where alternate functionality is available. Use DEPRECATE_BUFFER_CHAIN_METHODS to control if these methods are still available.
  • Methods on JetByteTools::IO::IBufferProcessor that do not take JetByteTools::IO::CSmartBuffer have been deprecated. Use DEPRECATE_BUFFER_PROCESSOR_METHODS to control if these methods are still available.