The latest release of the licensed version of the socket server framework is now available. This release includes the following changes.
The following changes were made to the libraries.
Admin Library - 5.2.1
Admin.cpp file which displays details of the settings from Admin.h during a build.SecureCRT.h header which is used to provide the "secure" string functions on compilers prior to VS2005.JetByteTools::Win32::IMonitorThreadPool::OnThreadPoolError() which is called when an error occurs in a thread poolJetByteTools::Win32::IIOCPWorkerThreadCallback::OnProcessException()JetByteTools::Win32::IIOCPWorkerThreadCallback::OnThreadTerminationException() which are called when worker threads have problems.JetByteTools::Win32::CThreadedCallbackTimerQueue::OnThreadTerminationException() which is called when the worker thread dies unexpectedly.JetByteTools::Win32::CThreadPool where there was a bug in the code used to forcibly terminate threads if they didn't shutdown cleanly in time during a shutdown of the pool. If the pool had expanded and then contracted, or if any threads had terminated due to exceptions then there would be invalid entries in the list of threads that the pool would attempt to terminate and this could cause access violations.JetByteTools::Win32::GetLastErrorMessage() it no longer reports "invalid parameter" as the error message for any messages which have insertion strings...JetByteTools::Win32::IsGoodReadPtr() is now cross processJetByteTools::Win32::SetCurrentDirectory()JetByteTools::Win32::StripFileNameFromPathName() which does the opposite of JetByteTools::Win32::GetFileNameFromPathName(); that is, the new function returns the path without the element after the last backslash.JetByteTools::Win32::CThreadNameInfo to use DWORD_PTRs rather than DWORDs.JetByteTools::Win32::CThread::IsThisThread() which returns true if the calling thread is the thread represented by the thread object.JetByteTools::Win32::IConfiguration::GetShortValue().JetByteTools::Win32::CThreadPool where an exception thrown from Process() would prevent OnThreadPoolProcessingStopped() being called which would screw up the active thread count and lead to thread starvation.JetByteTools::Win32::IsWow64Process() which returns true if the process is an x86 process that is running under WOW64 on an x64 system.JetByteTools::Win32::Is64bitProcess() which returns true if the process is an x64 process.JetByteTools::Win32::Is32bitProcess() which returns true if the process is an x86 process.JetByteTools::Win32::IConfiguration::GetOptionalConfiguration() and JetByteTools::Win32::IConfiguration::GetOptionalConfigurations().JetByteTools::Win32::CEvent::CreationFlags and adjusted the constructors of all three event classes so that you can specify if construction should fail if a named event object already exists, or doesn't already exist. The default behaviour is to not care, which is the same as previous versions of the library.JetByteTools::Win32::CEvent, JetByteTools::Win32::CAutoResetEvent and JetByteTools::Win32::CManualResetEvent to enable you to specify that creation of a named event should fail if an event of that name already exists, or if an event of that name does NOT already exist.JetByteTools::IO::CAsyncFileWriter to release the buffer that was used during a write before we signal that the write is complete, this prevents a resource leak or crash when the destructor is waiting for the final write to complete before cleaning up.IServerControl.h to work around the InitiateShutdown macros that have been moved in a recent version of the Platform SDK. See the comment in the header for details.NameInfo.cpp, if _WIN32_WINNT is less than 0x0502 then use getnameinfo() as GetNameInfoW() isn't available on this platform.Full details of the free version of the code are available here.
Doxygen documentation for the previous (5.2) release is available here.
If you're an existing client and you'd like these changes let me know.