* Complimentary to #3918
I think that we can use Poco::Mutex and Poco::FastMutex as wrappers for std::recursive_mutex and std::mutex instead of replacing
For using std::*mutexes switch on cmake-option POCO_ENABLE_STD_MUTEX
* add define POCO_ENABLE_STD_MUTEX to the Config.h
remove empty if-else from CMakeLists.txt
* * Fix: MongoDB::OpMsgCursor did not handle zero batch size properly: cursor requests failed.
* Improvement: Add emptyFirstBatch to indicate that the size of the first batch shall be zero for performance to get potential error ASAP from the server.
* Poco::MongoDB: Some database commands do not need collection as an argument. An integer "1" is passed instead.
Consider following situation. A class owns a timer. In destructor of that class we call .cancel() asynchronous on timer before it's destruction.
Now timer is executing cancel in it's own internal thread, while it's doing that destructor of timer is called from owner's destructor. Timer destructor enqueues stop notification. If that enqueue is happening just after while loop from cancel notification, stop notification is gonna be dropped and timer will never stop.
Fix: Add new method in TimedNotificationQueue which will return a notification regardless of the time it needs to be executed.
Get number of pending tasks in the queue. Flush out that many notifications from queue while taking special consideration of pending Stop and Cancel notifications.
Add test for new method in TimedNotificationQueue and fix cancel all tests to actually check if notification got executed.
fixes#3986
Consider following situation. A class owns a timer. In destructor of that class we call .cancel() asynchronous on timer before it's destruction.
Now timer is executing cancel in it's own internal thread, while it's doing that destructor of timer is called from owning class. Timer destructor enqueues stop notification. If that enqueue is happening just after while loop from cancel notification, stop notification is gonna be dropped and timer will never stop.
fixes#3986
Co-authored-by: Vojin Ilic <vilic@nvidia.com>
* ODBC sqlDirectExec
* doc
* Small fix
* Fix tabs, add missing const, fix style
* Add test case
* Small fixes
* suggested fix for async
* test for returned values
* Binary writer/reader: add writeCString and readCString.
* MongoDB::Database: add queryBuildInfo and queryServerHello; add WireVersion enum.
* MongoDB: Introduce OpMsgMessage (request and reply) and related changes in Connection, Database, MessageHeader.
* MongoDB: First unit test changes for OpMsgMessage.
* MongoDB::Document: new functions addNewArray and remove.
* MongoDB: OP_MSG unacknowledged write and many improvements
* MongoDB: new cursor using OP_MSG
* MongoDB: bunch of new tests for OP_MSG wire protocol.
* BinaryWriter::WriteCString: use write instead of operator <<.
* MongoDB::OpMsgCursor: Slightly modified prototype code for using moreToCome flag.
* MongoDB: Add OpMsg* files to Makefiles.
* MongoDB: Add OpMsg* files to VS project files.
* Compile fixes.
* MongoDB::Database: Add factory function for database commands createOpMsgMessage() and cursors createOpMsgCursor()
* Improve implementation of logging macros. #2331
The GNU compiler emits a warning if nested "if" statements are followed by
an "else" statement and braces are not used to explicitly disambiguate the
"else" binding. This leads to problems with code like:
if (gate)
ASSERT_*(condition) << "Some message";
The "switch (0) case 0:" idiom is used to suppress this.
* I was wrong.
do-while better then switch-case approach for "ambiguous else blocker"
https://godbolt.org/z/W5nnYrzx6
* try to fix tabs
* again fix tabs
* again fix tabs
* again fix tabs
* try fix compilation for solaris
* this commit for issue #3843 and #3643
changes in Types.h allow ignore problem with declaration of std::int8_t. int8_t can be defined as char or signed char. IMHO we need strong types for Poco::Int's
Envelop.cpp contains initializer for EVP_CIPHER_CTX_init, because this function prototype depends on openssl version.
Application.cpp contains includes especial for SOLARIS, for ioctl support
ClassLoaderTest.cpp and SharedLibraryTest.cpp contains changes because loadlibrary(dlopen) doesn't load library from current directory by default
LocalDateTimeTest.cpp contains changes because SOLARIS use std::tm without tm_gmtoff
* fix : define of SOLARIOS OS in LocalDateTimeTest
* remove unnecessary wrapper
* fix output dir for windows build with multi-config build
* try to fix bug with unixodbc version in linux-builds
[read here](https://github.com/microsoft/linux-package-repositories/issues/36)
* try to fix bug with unixodbc version in linux-builds
[read here](https://github.com/microsoft/linux-package-repositories/issues/36)
* fix : warning in main cmake for if-condition for multi-config build
fix : error for linux-gcc-make-cxx20, use --allow-downgrades for unixodbc
* fix : warning for cmake windows builds
revert changes for linux-gcc-make-cxx20
* revert ci.yml, remove unixodbc version
* try re-run build
---------
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>
* fix log verbosity in windows powershell build script
* stop paths being added multiple times to environment variables
* pass useenv property to msbuild
* linking issue: include crypto.h prior to config.h so POCO_EXTERNAL_OPENSSL is initialised
* resolve poco_base path in powershell script
* build against any available windows sdk
* fix(CI): CI MySQL compile fail #3925 (Linux)
* fix(CI): CI MySQL compile fail #3925 (Linux, 2nd attempt)
* fix(CI): CI MySQL compile fail #3925 (OSX)
* Test that enumerates lots of elements with the same name
* Use map from key to count instead of multiset
Co-authored-by: Alexander Gololobov <{ID}+{username}@users.noreply.github.com>