* sample(DBLogger): New sample to demonstrate DB logging to a file. (#4750)
* sample(DBLogger): Create messages via SQL logger in a thread (#4750)
* sample(DBLogger): Save messages from SQL files to an SQL database (works with SQLite) (#4750)
* chore(Makefile): Data samples depend on PocoUtil (#4750)
* sample(DBLogger): Refactored DBLogger with std::filesystem::directory_iterator and std::thread.
* sample(DBLogger): Add missing include <condition_variable>
* sample(DBLogger): Extracted log scanning and inserting functionality to class SQLLogInserter.
* sample(DBLogger): Create new logging table only when using demo messages option.
* feat(DBLogger): VS projects
* sample(DBLogger): Acquire options from configuration file.
* feat(DBLogger): regenerate VS projects (progen file change)
* sample(DBLogger): Add example DBLogger.properties file.
* sample(DBLogger): Process as much as possible when stopping processing.
* sample(DBLogger): Meaningful defaults in properties file.
* sample(DBLogger): Verify validity of database session on startup.
* sample(DBLogger): Configure demo SQL channel in properties file.
* chore(DBLogger): style and warnings
---------
Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>
Co-authored-by: Alex Fabijanic <alex@pocoproject.org>
* enh(Application): remove useless function
* enh(Application): add ignoreUnknownOptions() function
* fix(OptionSet): comment error
* enh(Application): public two functions: getApplicationPath/getApplicationDirectory
* enh(Application): make findAppConfigFile function public and virtual
* style(Application): code alignment
* fix(Application): do not re-throw exception
* enh(poco): Replace deprecated comments with C++ deprecated attribute.
* enh(Poco): Replace some deprecated functionality in Poco sources. (#4426)
* enh(Poco): Replace more deprecated functionality in Poco sources. (#4426)
* fix(CMake): Variable BUILD_SHARED_LIBS must be defined properly to create valid binaries.
* enh: Code improvements done while resolving deprecated functionality (#4426)
* Un-deprecate LocalDateTme (#4426)
* enh(Poco): Replace usage of deprecated functionality with other functions/classes (#4426)
* chore(SSL): temporarily un-deprecate SSL-related functionality (#4426)
* chore(SSL): temporarily un-deprecate old MongoDB protocol functionality (#4426)
* enh(Poco): Minor Hash improvements (#4426)
* enh(Foundation): Compile deprecated hash tests only when POCO_TEST_DEPRECATED is enabled (#4426)
* enh(Net): Compile deprecated Socket::select functionality only when POCO_TEST_DEPRECATED is enabled (#4426)
* enh(Bonjour): Replace deprecated Socket::select with PollSet (#4426)
* enh(Poco): Introduce POCO_DEPRECATED macro to have the ability to disable deprecation warnings in applications (#4426)
* test(ODBC): add few asserts to testStoredProcedureDynamicVar
* fix(ODBC): rename DynamicAny -> DynamicVar in tests
* fix(ODBC): make Dignostics static members inline to prevent explicit instantiation warnings on windows
---------
Co-authored-by: Alex Fabijanic <alex@pocoproject.org>
* Remove _WIN32_WCE macro
Poco now use C++17 and Windows CE does not support it and VS2017 does
also not support it so we can just remove Windows CE code. First remove
all macro usages from our own files.
* Remove WinCE support from build files
Poco now use C++17 and Windows CE does not support it and VS2017 does
also not support it so we can just remove Windows CE code. Remove all
references from build systems / scripts.
* Remove Windows CE related source and header files
Poco now use C++17 and Windows CE does not support it and VS2017 does
also not support it so we can just remove Windows CE code. First remove
all macro usages from our own files.
* Remove wcelibcex folder
Poco now use C++17 and Windows CE does not support it and VS2017 does
also not support it so we can just remove Windows CE code. First remove
all macro usages from our own files.
* Remove rest Windows CE mentions
There where some Windows CE mentions left. Remove those.
* Update Windows CE documentation
We should keep documentation some time so people can find reason for
remove.
---------
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
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>
* 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>
* 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>
Timer is implemented with internal queue. If a user wants to cancel all pending tasks it can call .cancel to schedule CancelNotification.
As a part of processing of CancelNotification it will just flush the whole queue. It does have special processing for StopNotification so that Timer destruction doesn't get blocked.
Now if we first schedule async cancel and before this first cancel is processed we schedule another cancel but this time a sync second one will block because it is never notified that all tasks are canceled, _finished event is never set on that flushed CancelNotification.
Fix: add diffrent processing in case of CancelNotification to set all of it's _finished events.
Also add a test for this situation.
* As of C++11, std::swap is noexcept. #2386
* fix(Any): remove throw on swap
* fix(Any): As of C++11, std::swap is noexcept. #2386
* fix(Any): make size const #2386
* fix(SimpleRowFormatter): clang won't compile noexcept #2386
* a couple of arm fixes
* fix(Any): As of C++11, std::swap is noexcept. #2386
* fix(AnyTest): local() for POCO_NO_SOO# 2386
* test(RSACipher): RSA encryption without private key #2367
* chore(RSACipherTest): delete ciphers #2367
less then 3 Elements. Also the Function crashes if no SVC_REBOOT or
SVC_RUN_COMMAND are specified. If this is the case ac.lpCommand and
ac.lpRebootMessage are not set.