* add possibility to use native sendFile from OS for HttpServerResponse
add option POCO_USE_SENDFILE_FOR_HTTPSERVER, default - OFF
add test for HttpServer - testFile
add define fro Config.h POCO_USE_SENDFILE_FOR_HTTPSERVER
* my fail, be carefull with macro and brackets
* replace option POCO_USE_SENDFILE_FOR_HTTPSERVER with compiletime
detected macro POCO_HAVE_SENDFILE
replace types for sendFile with platform depended
wrap possibility of using sendFile with macro, if sendFile doesn't exist
in OS, then all methods don't exist
* remove option POCO_USE_SENDFILE_FOR_HTTPSERVER from ci.yml
* wrap testSendFile in the suite with define POCO_HAVE_SENDFILE
* try fix compile problem with emscripten
* oh, emscripten again
* fix logical error in testSendFile
* fix problem with cmake-specific macro when usinf make-project
* revert types from platform depended to Poco::Int64 and Poco::UInt64
for sendfile
* make Poco::ActiveThreadPool easy to use (#4544)
* code format
* Fix ThreadSanitizer thread leak error
* enh(ActivePooledThread): Change pointers to references
* enh(ActivePooledThread): remove unused method
* enh(Poco::ActiveThreadPool): Use std::unique_ptr instead of raw pointer
* enh(Poco::ActiveThreadPool): Use C++ static_cast instead of C casting
* enh(Poco::ActiveThreadPool): Use standard containers instead of implementing own
* enh(Poco::ActiveThreadPool): Change pointer to reference
* enh(Poco::ActiveThreadPool): Use smart pointers instead of bare pointers
* enh(Poco::ActiveThreadPool): Fix codeql warning: A stack address which arrived via a may be assigned to a non-local variable.
* enh(Poco::ActiveThreadPool): More test case
* enh(Poco::ActiveThreadPool): std::optional::value unavailable on earlier macOS versions
* enh(Poco::ActiveThreadPool): Fix compare function for make heap
* enh(Poco::ActiveThreadPool): Add more test case
* enh(Poco::ActiveThreadPool): Add more test case
* enh(Poco::ActiveThreadPool): Code style
* enh(Poco::ActiveThreadPool): Test case
* enh(Poco::ActiveThreadPool): Test case
* enh(Poco::ActiveThreadPool): Fix test case error
* Revert "enh(Poco::ActiveThreadPool): std::optional::value unavailable on earlier macOS versions"
This reverts commit cba4673b47.
* enh(macOS): require min deployment macOS version 10.15 which has full support for C++17
* enh(Poco::ActiveThreadPool): Remove useless "{}"
* enh(Poco::ActiveThreadPool): Rename member variable m_impl to _impl
---------
Co-authored-by: Matej Kenda <matejken@gmail.com>
* Allow set enum as json value (#4363)
* fix issue #4341
add testEnum
if you set enum as json value then it will be cast to int
* add behavour for enum into VarHolderImpl
add tests for enum classes with differnent underline integral types
* replace static_cast with convertTo* methods, they can chaeck types and
limits
* fix missing types for convert methods
* fix code style
add testEnumType to the VarTest.cpp, extract() works
* enh(VarHolder): replace ::value and ::type with shortcuts
---------
Co-authored-by: Alexander B <ale.bychuk@gmail.com>
* enh(ProcessRunner): does not detect launch errors #4482
* enh(File): add absolutePath and existsAnywhere() #4482
* fix windows build and tsan fail
* fix tsan
* fix windows file tests
* comment out some CI env path -related issues
* fix tsan and windows build
* try to fix ci
* ignore ProcessRunner test fail on windows cmake
* enh(File): canExecute throws FileNotFoundException if the file to be executed can't be found in the path.
* Few C++ modernisation changes.
* enh(File): Windows specifics of File::canExecute. Returns false if the file to be executed can't be found using absolutePath.
---------
Co-authored-by: Matej Kenda <matejken@gmail.com>
* 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>
* enh(ThreadTest): add join test
* enh(SQLLogger): #4529 (wip)
* enh(SQLChannel): just few C++17 modernisations.
* enh(SQLiteTest): extend unit test to destroy SQL channel while it has pending messages. (#4529)
* enh(ODBC): improve exception descriptions and add string/batch size tests
* feat(SQLChannel): add store-and-forward mode
* fix(DataTest): SQLChannel *nix build and test run #4529
* fix(DataTest): CodeQL warning #4529
* chore(ODBCTest): lower the number of max statements in big batch
* feat(SQLChannel): add flush property #4529
* enh(SQLChannel): use event for interruptible sleep; reduce code duplication with lambda; update comments #4529
* fix(SQLChannel): flush time determination #4529
---------
Co-authored-by: Matej Kenda <matejken@gmail.com>
Some types support being swapped but may not have declared their
std::swap overloads when Poco/Optional.h is first included. This is the
case for instance with
#include <Poco/Optional.h>
#include <array>
using Problematic = Poco::Optional<std::array<int, 42> >;
With an unqualified call to swap, preceded by using std::swap, we allow
argument-dependent lookup to find suitable implementations of swap.
MS Visual Studio can use type long for __LINE__ macro when /ZI
compilation flag is used - https://learn.microsoft.com/en-us/cpp/build/
reference/z7-zi-zi-debug-information-format?view=msvc-170#zi-1
This breaks some poco interfaces, for ex. logger
We should fix type for line number
* Allow using Poco::FileStream to wrap arbitrary file handles/descriptors as C++ streams (#3444).
* Allow opening a file descriptor/HANDLE as C++ stream.
* FileStream: treat read from closed pipe as EOF.
* chore(Filestream): conde style (naming)
Co-Authored-By: Alex Fabijanic <alex@pocoproject.org>
Co-Authored-By: Matej Kenda <matejken@gmail.com>
* enh(FileStream): make FileIOS::open a virtual function. (#3444)
* test(FileStream): unit test for FileStream::openHandle (#3444)
* Update CONTRIBUTORS.
* test(FileStream): Win32 unit test fix.
* build(CMake): Require policy minimum version 3.15.
---------
Co-authored-by: Daniel Grunwald <grunwald@axivion.com>
Co-authored-by: Alex Fabijanic <alex@pocoproject.org>
* feat(AsyncObserver): Improve NotificationCenter speed and usability #4414
* fix(Notification): add missing header
* feat(Any): add checkers for holding nullptr #4447
* feat(NotificationCenter): g++ build and refactoring #4414
* fix(Observer): compile errors on some compilers #4414
* fix(NotificationCenter): compile errors #4414
* chore(ParallelSocketAcceptor): remove unnecessary include and using from header
* feat(AsyncNotificationCenter): add #4414
* test(AsyncNotificationCenter): add mixed observer types to the test #4414
* fix(AsyncNotificationCenter): hangs on program exit #4414
* fix(dev): friend not honored, temporarily make private members public
* fix(AsyncNotificationCenter); remove default #4414
* feat(format): Add string_view format type spec #4409
* chore(Types): add demangle
* fix(Data): Oracle failing ODBC tests #4368
* fix some CQL and fuzz warnings; add Var::typeName()
* fix(build): -std=c++17 and c11
* fix windows build
* fix(Foundation): test apps vs projects c++17
* chore(build): remove uneeded compiler flag
* fix(VarHolder): number of digits range check for int->float conversion (reported by CIFuzz)
* fix(test): CIFuzz
* fix(CIFuzz): another attempt
* fix(progen): add LanguageStandard (stdcpp17, stdc11); regenerate vs170 projects
* fix(CiFuzz): add int->float precision loss barrier; fix erroneous number of digits logic
* enh(Var): silent loss of precision on int->float conversion #4423
* enh(Var): silent loss of precision on int->float conversion #4423
* chore(build): remove old build files
* chore: fix missing parens warning
* enh(Thread_POSIX): prevent double-joining; add error description to exceptions
* fix(Data): unresolved Column<long> linkage in test
* fix(demangle): determine type name from template parameter; add eror diagnostic for demangling failures
* chore(buildwin): remove old vs versions from build and progen scripts; update documentation
* chore(buildwin): remove leftover closing curly
* Upgrade from GetAdaptersInfo to GetAdaptersAddresses API. The code has been swapped back to a buffer of bytes because the data structure built by GetAdaptersAddresses is a linked list and the returned size is not a multiple of the IP_ADAPTERS_ADDRESSES struct.
* Adding back Poco/UnWindows.h
* Undoing indents.
* fix(ActiveRecord): missing ActiveRecordLib_API definitions for clang/gcc.
* fix(FPEnvironment): export FPEnvironmentImpl classes (#4393, #3331)
* fix(Crypto): export *Impl classes used from inlines (#4393, #3331)
* fix(Dynamic): explicitly instantiate and export Dynamic::Struct for string and int (-fvisibility=hidden) (#4393, #3331)
* fix(JSON): explicitly instantiate and export SharedPtr for JSON::Array and JSON::Object (-fvisibility=hidden) (#4393, #3331)
* enh(CMake): Set symbol visibility to hidden (#4393, #3331)
* enh(configure): user c++17 standard for iphone, Darwin and ARM-Linux.
* fix(UTF): explicitly instantiate and export 16 and 32-bit strings (-fvisibility=hidden) (#4393, #3331)
* fix(RecordSet): make Extraction.h internal and instantiate RecordsSet::column template functions only for supported types. (-fvisibility=hidden) (#4393, #3331)
* fix(UTF): fix explicitly instantiation on Windows (-fvisibility=hidden) (#4393, #3331)
* enh(CMake): Add github jobs for macOS with visibility set to hidden (#4393, #3331)
* fix(CppParser): Add missing declarations for CppParser_API (#4393, #3331)
* enh(CMake): Enable more options in github jobs for macOS with visibility set to hidden (#4393, #3331)
* fix(MongoDB): Add missing MongoDB_API (#4393, #3331)
* fix(platform): MinGW Compile and link errors: undefined reference to `WinMain'
* fix(platform): MinGW compile UUID tests (conflicting UUID defined as GUID in rpcdce.h via windows.h)
* Debian: Use null as device file as console might not be there
* Debian: Add GNU Hurd support
* Debian: Includes not available on Hurd
* Debian: Disable SHA2 test on platforms where it's broken
* Debian: Set POCO_NO_FPENVIRONMENT for armel
---------
Co-authored-by: Jochen Sprickerhof <git@jochen.sprickerhof.de>
* fix(Data::AbstracSessionImpl): protect autocommit feature handlers #4261
* chore(CI): re-enable mysql
* MySQL SessionImpl: make sure autocommit mode is on when session is openend or reset.
* PostgreSQL SessionImpl: reuse autocommit flag of AbstractSessionImpl.
* Github workflow: re-activated linux-gcc-make-postgres
* Fixed indentation in ci.yml
* Fix for DataTest SQLExecutor: use connector
* Data::Session: when parser is not used and autocommit mode is off, assume any SQL statement begins a transaction.
* PostgreSQL: don't use SQL parser (it currently cannot handle placeholders).
* PostgreSQL: added test sessionTransactionNoAutoCommit
* PostgreSQL test suite: removed reference to generic SQLExecutor
* PostgreSQL: fixes for sessionTransactionNoAutoCommit.
* MySQL: added test sessionPoolAndUnicode (from #2801)
* Fixed #define in sql-parser
* Data generic testsuite: support numbered placeholders
* PostgreSQL test suite: added missing include directory to Makefile.
* Attempt to fix PostgreSQL Makefiles
* PostgreSQL testsuite: added include path to Makefile
* PostgreSQL testsuite: added PocoDataTest library to Makefile
* DataTest SQLExecutor::formatSQL: don't use string_view
* PostgreSQL test suite: delegated most tests to Poco::Data::Test
* Makefile: added dependencies on Data-Tests
* Weaken assumptions about async in generic transaction tests
* Makefile: added dependency for Prometheus samples
* Fix deadlock in DataTest SQLExecutor
* PostgreSQL tests SQLExecutor: cleanup
* feat(Data::AbstractSessionImpl): add autoCommit property and tests #4261
* Brought MySQL backend in line with _autoCommit flag of AbstractSessionImpl.
---------
Co-authored-by: Friedrich Wilckens <frwilckens@gmail.com>
Co-authored-by: Friedrich Wilckens <friedrich.wilckens@ingramcontent.com>
* directoryiterator: Fix missing inline
Add missing inline to inline function.
This was found with clang-tidy check: misc-definitions-in-headers
* Convert deprecated throw() to noexcept
throw() has been deprecated in standar in C++17. It has been removed in
C++20. Code still compiles but let's just define these at those should
be.
These where found with clang-tidy check: modernize-use-noexcept
* Fix unnecessary copy initializations
Clang-tidy did find these with check:
performance-unnecessary-copy-initialization
* Fix some strings not references
Looks like these are just missing reference marks.
---------
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
* 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>
Poco now use C++17. We can take some old code away because of that. We
also raise requiments for C++17 so everything works as excpected with
it.
Co-authored-by: Kari Argillander <kari.argillander@fidelix.com>
* GH #569: Cherry pick and correct code from devel-experimental.
* GH #569: Add missing timezone codes.
* enh(Foundation): DateTimeParser: stricter checks of timezones, more tests for invalid inputs. (#569)
* enh(Foundation): Small fixes of issues detected by CodeQL
---------
Co-authored-by: Alex Fabijanic <alex@pocoproject.org>
* add sendfile method for streamsocket
* add mswsock.lib to the project files and templates
* remove /DPOCO_NO_AUTOMATIC_LIBS for cmake windows build
* merge from upstream
* merge from upstream
* fix code stile
add NotImplemented exception for unsupported platforms
exculude <sys/sendfile.h> for POCO_EMSCRIPTEN, because https://
github.com/emscripten-core/emscripten/pull/16234
* add iostream include for std::cout
* fix compilation for emscripten (wrap sendfile)
* Merge remote-tracking branch 'jackywoo/add_self_to_path' into 2282-path-self
* fix(Foundation): minor code cleanup. #2282
* enh(Foundation): Windows unit test for Path::self and exception for non-implemented platform.
* fix(Foundation): Path::self() throws SystemException when the path can't be acquired. #2282
Co-developed-by: Jackie Woo <wuchienchao@qq.com>
Co-developed-by: Matej Kenda <matejken@gmail.com>
* Made it possible to use lowercase hex numbers, also when encoding JSON (#3102)
Co-authored-by: Thomas Weyn <Thomas.Weyn@cebir.be>
* fix(JSONString): Remove deprecated toJSON functions #4305
* fix(NumericString): conversions inconsistencies #4304
---------
Co-authored-by: Archipel <thomas@weynwebworks.com>
Co-authored-by: Thomas Weyn <Thomas.Weyn@cebir.be>
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
SplitterChannel::addChannel() should only add a channel once to the internal vector. This prevents issues where the channel is accidentally added twice but only removed once because removeChannel stops at the first result. (#4270)
* 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>
* fix(SQLParser): use Data_API if available
* fix(ProGen): wrong AdditionalOptions separator #4259
* fix(SQLParser): add default export define when embedded
* feat(ci): run pull request runs only on pull request open #4205
* feat(ci): add retry action for tsan #4205
* feat(ci): use local action for retrying tsan #4205
* fix(ci): use correct version of retry action #4205
* fix: make POSIX event thread safe
* feat(ci): add info on retry action to ci.yml header #4205
* feat(ci): add linux mysql test #4205
* feat(ci): remove unused mysql containers from tests#4205
* feat(ci): add linux postgre test #4205
* feat(ci): add linux redis test #4205
* feat(ci): add linux mongodb tests #4205
* feat(ci): add mysql odbc test #4205
* chore(ci): rename tests #4205
* chore(ci): pin postgres and mysql versions #4205
* feat(ci): add odbc postgres tests #4205
* chore(ci): mysql odbc comment #4205
* chore(ci): disable windows 2019 job #4205
* feat(ci): add linux oracle tests #4205
* chore(ci): disable oracle tests #4205
* feat(ci): add sql server tests #4205
* chore(ci): disable postgres tests #4205
* chore(ci): add logging for task test #4205
* feat(ci): add local retry action #4205
* feat(ci): ignore process kill failure in action #4205
* feat(ci): send SIGKILL instead of SIGTERM in action #4205
* chore(ci): add updated action #4205
* chore(ci): reduce tsan timeout #4205
* feat(ci): kill process without children #4205
* feat(ci): send SIGTERM to child in action #4205
* feat(ci): prolong tsan timeout #4205
* chore(ci): add missing newlines #4205
* fix(ci): revert sql server test FreeTDS version #4205
* feat(ci): add retry to all jobs #4205
* feat(ci): setup python for codeQL #4205
* chore(ci): disable throwing on codeql error #4205
* 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)
* Fix pthread_setname not declared #4063
* Fix include prctl.h for specific OS #4063
* Fix getThreadName for specific OS #4063
---------
Co-authored-by: root <root@debian-gnu-linux-11.localdomain>
Co-authored-by: Pavle <pavle@debian-gnu-linux-11.localdomain>