911 Commits

Author SHA1 Message Date
Sokolov Yura
904075e1f1
AutoPtr: do 'duplicate' before 'release' (#4068)
Common knowledge in reference counting is "on assignment increment first
then decrement", because "just to be deleted" object could hold last
reference to "just to be assigned" one.

Fixes #3979
2023-11-23 04:49:10 +01:00
Alexander B
4a9285c997
Improve FifoEvent, ActiveMethod, ActiveResult (#4211)
Co-authored-by: Alexander B <bas524@ya.ru>
2023-11-22 00:59:24 +01:00
Alexander B
6a5387ec21
add visitor pattern implementation for Poco::Dynamic::Var (#4144)
* add visitor pattern implementation for Poco::Dynamic::Var

* add changes to Makefile and vcxproj for VarVisitor

* resolve review comments Poco::Dynamic::Var

---------

Co-authored-by: Alexander B <bas524@ya.ru>
2023-11-11 19:18:12 +01:00
Aleksandar Fabijanic
bda0cd1a07
Merge branch 'devel' into 4230-data-fixes-improvements 2023-11-10 12:18:25 +01:00
Aleksandar Fabijanic
78234857bf feat(ProGen): default to c++17 2023-11-05 23:40:47 +01:00
Alex Fabijanic
8b620e7476 enh(poco): std::string literals #4216 2023-11-02 22:12:23 +01:00
Günter Obiltschnig
743da564eb #4241: Poco::FileInputStream broken in 1.12.5 and 1.11.8. 2023-11-02 12:10:21 +01:00
Alex Fabijanic
757fc32199 fix(build): add missing include path 2023-11-01 16:29:49 +01:00
Alex Fabijanic
6dad8502d3 fix(Data):
* make bool Session::isTransaction() return Poco::Optional
* move parsing to Statement
* SQLParser make build
* other fixes and improvemets #4230
2023-11-01 00:25:46 +01:00
Aleksandar Fabijanic
8c4b166737 fix(LinearHashTable): fix std::iterator deprecated warnings; test warnings #4235 2023-10-29 14:44:15 +01:00
cunj123
0d696eaf57 fix: make POSIX event thread safe 2023-10-24 21:00:58 +02:00
Alex Fabijanic
cd12420495 fix(Foundation): use after free warnings #4189 2023-10-23 23:47:56 +02:00
Aleksandar Fabijanic
e40f07099d
fix(Net): Add Unix socket support on windows #4208 (#4209)
* fix(Net): Add Unix socket support on windows #4208

* feat(Net): add abstract local socket support #4208

* fix(PollSet): use localhost socket in PollSet on windows when available #4208

* fix(PollSetTest): comment checking unconnected sockets status (Linux epoll signals them as readable/writable)
2023-10-23 13:33:46 +02:00
Günter Obiltschnig
06a03d1ada Poco::TemporaryFile: fix possible naming collisions due to random zero increment 2023-10-14 11:35:43 +02:00
Günter Obiltschnig
70bb8f13f9 CppUnit: demangle class names 2023-10-02 07:16:48 +02:00
Günter Obiltschnig
4244c3251f #4170: Poco::FileStream is always opened with std::ios::in | std::ios::out 2023-09-30 12:26:11 +02:00
Günter Obiltschnig
1db6fb9a2e bump version 2023-09-30 12:23:31 +02:00
Günter Obiltschnig
2fb5e60e79 #4169: Upgrade bundled zlib to 1.3 2023-09-30 12:20:35 +02:00
Philip Ye
43bcc553fe
Fix typo in document of TaskManager::start() (#4155) 2023-09-21 13:30:52 +02:00
Romain Geissler
5fb67c452a
Fix typos in #4086 and #4087. 2023-07-18 07:30:29 +00:00
Günter Obiltschnig
346ec77dbd
Merge pull request #4087 from Romain-Geissler-1A/remove-different-signedness-comparison-warning
Silence gcc -Wsign-compare warning when instantiating Poco::Dynamic::VarHolder::convertSignedToUnsigned.
2023-07-18 09:21:15 +02:00
Romain Geissler
615e7773b8
Silence gcc -Wsign-compare warning when instantiating Poco::Dynamic::VarHolder::convertSignedToUnsigned.
/data/mwrep/res/osp/Poco/Foundation/23-0-0-0/include/Poco/Dynamic/VarHolder.h: In instantiation of 'void Poco::Dynamic::VarHolder::checkUpperLimit(const F&) const [with F = signed char; T = unsigned int; typename std::enable_if<std::is_integral<_Tp>::value, bool>::type <anonymous> = true]':
/data/mwrep/res/osp/Poco/Foundation/23-0-0-0/include/Poco/Dynamic/VarHolder.h:361:23:   required from 'void Poco::Dynamic::VarHolder::convertSignedToUnsigned(const F&, T&) const [with F = signed char; T = unsigned int]'
/data/mwrep/res/osp/Poco/Foundation/23-0-0-0/include/Poco/Dynamic/VarHolder.h:799:26:   required from here
/data/mwrep/res/osp/Poco/Foundation/23-0-0-0/include/Poco/Dynamic/VarHolder.h:405:26: error: comparison of integer expressions of different signedness: 'const signed char' and 'unsigned int' [-Werror=sign-compare]
  405 |                 if (from > std::numeric_limits<T>::max())
      |                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2023-07-18 07:16:24 +00:00
Romain Geissler
d28129cbc4
Remove std::aligned_storage as it is deprecated in C++23.
Instead, replace it with std::max_align_t in the Any implementation, as
really we would like to be able to store any object with any alignment
in the small object optimization case. Typically the size and alignment
of std::max_align_t is 8 or 16 on most platforms. Added a static assert
to ensure that this change doesn't result in wasting more unused memory
in case the size of the storage buffer is smaller than this maximum
alignment (which is right now 64, so shall be ok on all platforms).
2023-07-18 07:05:32 +00:00
Alexander B
bce5f961dd
optimize checkUpperLimit and checkLowerLimit in VarHolder.h avoid (#4072)
compile-time warnings when argument type is float and condition always
true

Co-authored-by: Alexander B <bas524@ya.ru>
2023-07-11 08:08:35 -05:00
Alexander B
c7ac8574f8
Complimentary to #3918 (std::*mutex wrapper) (#3954)
* 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
2023-05-05 09:49:06 -05:00
Vojin Ilic
b8d1792fa0 Fix hang in destructor
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
2023-04-04 12:08:49 +02:00
Aleksandar Fabijanic
bcae06f423
3808 icmp statistics (#3982)
* fix(ICMPClinet): ICMPEventArgs Statistics bugs #3808

* fix(SpinlockMutex): 100 % CPU usage on single-core system #3852
2023-03-22 09:11:13 -05:00
Matej Kenda
3838070146
Resolves #3484: support for OP_MSG in Poco::MongoDB (#3902)
* 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()
2023-03-20 01:50:15 -05:00
Alexander B
7ab7a5291d
Improve implementation of logging macros. #2331 (#3862)
* 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
2023-03-18 05:21:32 -05:00
Alexander B
3852a6b6c2
Solaris.build fix #3843 and #3643 (#3939)
* 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>
2023-03-18 01:28:47 -05:00
Andrew Auclair
66e93f98cc
Custom rotate, archive and purge strategies for FileChannel (#3810)
* Adding the ability to set custom rotate, archive and purge strategies.

* Force CI
2023-03-18 01:28:25 -05:00
Samuel Thibault
d05d689622
Add GNU Hurd support (#3946)
Co-authored-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
2023-03-17 15:24:57 -05:00
Jay
c79ae36c2a Fix build for QNX 2023-02-14 14:27:31 +09:00
Byungjun Lee
5430b4c5b6
Fix Aix Build (#3860)
* Fix : Aix System NumberFormatter Build Error

* Fix : Aix System OpenSSL 3.0 Build Support

 - https://github.com/openssl/openssl/blob/openssl-3.0.0/NOTES-UNIX.md?plain=1#L110

* Add : Aix System Gcc Build Support

* Revert "Add : Aix System Gcc Build Support"

This reverts commit b9a4b90e39ed0a6514a1fe24ae5564560553876b.

* Add : Aix System Gcc Build Support
2023-01-24 00:55:17 -06:00
R. Savchenko
079b50e0c1
Guard NOMINMAX ifdef (#3906) 2023-01-24 00:42:43 -06:00
Alex Fabijanic
4ceb731bba feat(Process): Add options to disable STDIO in child process #3867 2023-01-23 12:23:03 +01:00
Günter Obiltschnig
5a252fddcb #3859: zlib headers not updated 2022-11-10 19:15:55 +01:00
Alex Fabijanic
a2c09c29d8 feat(DynamicStruct): toString() escaping #3833 2022-10-13 11:50:53 +02:00
Alex Fabijanic
49f6def959 feat(Logger): Optimize multi-arg logger methods to only call format() if log level allows #2332 2022-08-30 09:29:53 +02:00
haorui wang
22d2865de2
chore(Foundation) : correct spelling (#3750) 2022-08-14 07:39:03 -05:00
Alex Fabijanic
46d5d58bc8 chore: 1.12.3 version 2022-08-10 15:32:29 +02:00
Alex Fabijanic
4f5f30936b chore: 1.12.2 versions and notes 2022-08-07 11:54:22 +02:00
Alex Fabijanic
d7ced77529 release 1.12.1 2022-08-07 11:52:21 +02:00
Alex Fabijanic
dbb7b5f8e2 fix: g++ C++20 warnings #3734 2022-08-06 22:28:45 +02:00
Alex Fabijanic
42b6d3ace4 fix(format): Poco::format and C++20 #3733 2022-08-06 22:24:41 +02:00
Alex Fabijanic
cedb34d3c3 fix(Platform): LoongArch support #3460 2022-08-02 18:19:40 +02:00
Alex Fabijanic
10dfe9fe92 fix(SpinlockMutex): VS2022 compilation issues #3693 2022-07-27 16:19:06 -04:00
Aleksandar Fabijanic
86a4f0045e
Fix/posix sleep (#3705)
* fix(Thread_POSIX): sleep() poor performance #3703

* chore(vscode): add file associations

* fix(TaskManager): waits for all threads in the ThreadPool #3704

* fix(Thread): call std::this_thread::sleep_for() to sleep #3703

* fix(PollSet): wakeup fd is never read #3708

* feat(Thread): Add Thread::set/getAffinity() #3709

* doc(Thread): Thread::trySleep() assertion #3710

* fix(PollSet): wakeup fd is never read (windows portion and some other optimizations) #3708

* feat(SocketReactor): improvements #3713

* chore(ThreadTest): add missing include

* fix(PollSet): wakeup fd is never read #3708

* fix(Any): #3682 #3683 #3692 #3712

* fix(mingw): lowercase winsock2 and iphlpapi to allow cross compile #3711

* feat(Thread): Add Thread::set/getAffinity() #3709

* chore(SocketReactor): one-liners inlined, removed redundant try/catch in dospatch, remove unused onBusy()

* feat(SocketReactor): add socket to ErrorNotification

* fix(SocketReactor): pollTimeout assignment and ConnectorTest leak
2022-07-26 06:54:56 -05:00
Alex Fabijanic
d9ea0f5d75 fix(Event): POSIX Event state need not be atomic #3699 2022-07-19 17:58:13 +02:00
JackyWoo
1d28d2d42d
set thread name (#3664)
* set thread name

* fix dead lock

* fix code style & return fake name

* fix code style

* fix code style

Co-authored-by: Aleksandar Fabijanic <aleks-f@users.noreply.github.com>
2022-07-18 05:21:33 -05:00