- Breaking change
JetByteTools::IO::IAsyncIOStreamnow work in terms of
JetByteTools::IO:CSmartBufferwhere possible. This potentially reduces the reference counting activity on the buffers.
- Breaking change Where possible
JetByteTools::IO::CSmartBufferhas replaced raw pointers and references to buffers. This massively reduces the need to reference count buffers during normal I/O operations and increases performance, especially on NUMA architectures.
- Bug fixes to
JetByteTools::IO::CBufferaround the usage of
- Bug fix to
JetByteTools::Win32::CCallbackTimerQueueEx::BeginTimeoutHandling()to prevent incrementing
m_nextTimeoutHanldecausing the value to wrap to
InvalidTimeoutHandleValuewhich was possible, but unlikely.
- Dropped support for Visual Studio 2005 and Visual Studio 2008.
- Dropped support for Windows XP.
JETBYTE_HAS_INTERLOCKED_64as it's true on all supported platforms now.
JETBYTE_WARN_ON_WSPIAPI_COUNTOF_DEFas these are no longer relevant.
JETBYTE_PERF_FILE_WRITER_SKIP_EVENT_ON_HANDLEas these are always enabled now.
JETBYTE_PERF_DATAGRAM_SOCKETS_SKIP_MARSHAL_TO_IO_POOLas these are always enabled now. Marshalling was only required to work around Windows XP's I/O cancellation on thread termination policy.
JETBYTE_DEPRECATE_TLS_BUFFER_ALLOCATORas these features are no longer available.
SecureCRT.has it's no longer required. It was used to map differences between the Visual Studio 2005 CRT and the "new" secure CRT.
- Added the macro,
SuppressLNK4221Warning(), which can be put into a file in order suppress the MS Visual C++ Linker warning 4221 - "warning LNK4221: no public symbols found; archive member will be inaccessible"
- Turn off
JetByteTools::IO::CBufferBasedBufferAlloctorwhich is a simple shim to allow an instance of
JetByteTools::IO::IBufferto be used as an implementation of
JetByteTools::IO::IIOPool::DispatchToAll()as it was only required for issuing
CancelIO()calls to all I/O threads on XP where
- Added an overload of
JetByteTools::IO::CNonPooledBuffer::Create()that takes a
bufferSizeand a pointer to data and a data length so that you can create a buffer that initially contains some data but that is larger than that data.
- Added lots of standard buffer functionality to
JetByteTools::IO::CNonPooledBufferbefore deprecating it in favour of normal buffers obtained via
JetByteTools::IO::CAsyncFileWriter::ExecuteWritesOnCallingThreadIfSafeas it's the same as
JetByteTools::IO::CAsyncFileWriter::ExecuteWritesOnCallingThreadnow that we no longer support Windows XP.
JetByteTools::IO::IBuffer::GetTotalLength()which returns the length of a set of buffers defined using an array of
JetByteTools::IO::CBufferChain::CopyBufferChain()which uses an instance of
JetByteTools::IO::CBufferChain::IAllocateBufferHandlesto create a duplicate of a given buffer chain where the duplicate contains handles to the buffers in the original chain.
- Removed all of the code that was required to marshall I/O operations to the I/O threads on Windows XP.
- Removed the concept of write sequencing. There's no need now that the marshalling code has been removed.
- Removed the concept of "shared lock sockets" and, correspondingly "unique lock sockets". All socket objects now have their own lock.
- Removed the option of setting a socket's lock's
spinCountin the constructor of the socket allocator
- Replaced some usages of
JetByteTools::Win32::CUniqueCriticalSectionFactory. The concept of shared critical sections is no longer supported.
JetByteTools::Win32::CThreadedCallbackTimerQueue::HybridTickCount64NoLockas the hybrid
GetTickCount64()implementation is no longer required as all supported platforms now provide
JetByteTools::Win32::CCallbackTimerQueueExis now the only timer queue implementation.
JETBYTE_USE_CAPTURE_STACK_BACK_TRACEwe now ALWAYS used
CaptureStackBackTrace()so there's no need to make it optional.
- Added new overloads for
JetByteTools::Win32::StripFileNameFromPathName()which takes the path separator. This allows the functions to be used for file system paths or URI paths.
- Added new overloads for
JetByteTools::Win32::GetFileVersionString()which take languge IDs and charset IDs
- Added some code to the top and bottom of Utils.h which try to deal with situations where min and max have been defined as macros. We use the std::min() and std::max() template versions and macros confuse matters so the new code attempts to undef the macros if present and then redefine them at the end of the header.
JetByteTools::IO::IAllocateMultiBufferHandlesand the concept of "multi buffer handles".
- The stacking of connection filters that can generate their own writes has been deprecated.
- Compressing and deflating socket filters are now deprecated.