Merge branch 'develop' of https://github.com/pocoproject/poco into bugfix-294

This commit is contained in:
Christopher Baker 2014-11-19 16:35:19 -06:00
commit 0c3a07b5fe
251 changed files with 13593 additions and 5830 deletions

View File

@ -1,10 +1,101 @@
language: cpp
compiler:
- gcc
- clang
before_install:
- sudo apt-get update -qq
# - sudo DEBIAN_FRONTEND=noninteractive apt-get -qq -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
- sudo apt-get install -qq -y unixodbc-dev libmysqlclient-dev
script: ./configure && make -s -j2
cache:
- apt
before_install:
# we need a recent version of CMake
- sudo add-apt-repository -y ppa:andykimpe/cmake3
- sudo apt-get update -qq
- sudo apt-get install -qq -y unixodbc-dev libmysqlclient-dev g++-arm-linux-gnueabi g++-arm-linux-gnueabihf sloccount cppcheck
services:
- mongodb
env:
global: TEST_NAME=""
before_script:
- echo ${TEST_NAME}
matrix:
include:
- env: TEST_NAME="gcc (make)"
compiler: gcc
script:
- ./configure && make -s -j2
# TODO add this as soon as Linux-clang config is ready
# - env: TEST_NAME="clang (make)"
# compiler: clang
# script:
# - ./configure --config=Linux-clang && make -s -j2
- env: TEST_NAME="arm-linux-gnueabi- (make)"
script:
- ./configure --omit=Data/ODBC,Data/MySQL,Crypto,NetSSL,PageCompiler && make -s -j2 CROSS_COMPILE=arm-linux-gnueabi- POCO_TARGET_OSARCH=armv7l
- env: TEST_NAME="gcc (CMake)"
compiler: gcc
script:
- sudo apt-get install -qq -y cmake3
# disable tests, gcc-4.6 gets an internal compiler error
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=OFF .. && make -j2 && cd ..
- env: TEST_NAME="gcc-4.8 (CMake)"
compiler: gcc
script:
- sudo apt-get install -qq -y cmake3
- sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
- sudo apt-get update -qq
- sudo apt-get install -qq -y g++-4.8
- export CC="gcc-4.8"
- export CXX="g++-4.8"
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=ON .. && make -j2 && cd ..
- env: TEST_NAME="clang (CMake)"
compiler: clang
script:
- sudo apt-get install -qq -y cmake3
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_TESTS=ON .. && make -j2 && cd ..
- env: TEST_NAME="arm-linux-gnueabi-g++ (CMake)"
script:
- sudo apt-get install -qq -y cmake3
- export CC="arm-linux-gnueabi-gcc"
- export CXX="arm-linux-gnueabi-g++"
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_TESTS=ON .. && make -j2 && cd ..
- env: TEST_NAME="arm-linux-gnueabihf-g++ (CMake)"
script:
- sudo apt-get install -qq -y cmake3
- export CC="arm-linux-gnueabihf-gcc"
- export CXX="arm-linux-gnueabihf-g++"
- mkdir cmake-build && cd cmake-build && cmake -DENABLE_NETSSL=OFF -DENABLE_CRYPTO=OFF -DENABLE_TESTS=ON .. && make -j2 && cd ..
# TODO osx build
# TODO run test suite
# script:
# - ./configure && make -s -j2
# - sudo ifconfig -a
# - sudo ifconfig venet0 multicast
# - sudo ifconfig -a
# - export POCO_BASE=`pwd`
# - sudo -E build/script/runtests.sh
# QA jobs for code analytics and metrics
# static code analysis with cppcheck (we can add --enable=all later)
- env: TEST_NAME="cppcheck"
script: cppcheck --force --quiet --inline-suppr -j2 -iData/SQLite/src/sqlite3.c .
# search for TODO within source tree
- env: TEST_NAME="TODO"
script: grep -r TODO *
# search for FIXME within source tree
- env: TEST_NAME="FIXME"
script: grep -r FIXME *
# search for HACK within source tree
- env: TEST_NAME="HACK"
script: grep -r HACK *
# some statistics about the code base
- env: TEST_NAME="sloccount"
script: sloccount .

View File

@ -8,14 +8,18 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
include_directories( "include" )
add_library( ${LIBNAME} SHARED ${SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" SHARED ${SRCS} )
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL ApacheHandlers_EXPORTS)
target_link_libraries( ${LIBNAME} )
target_link_libraries( "${LIBNAME}" )
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
if (ENABLE_TESTS)
add_subdirectory(samples)

View File

@ -8,7 +8,7 @@
project(Poco)
cmake_minimum_required(VERSION 2.8.0)
cmake_minimum_required(VERSION 3.0.0)
file(STRINGS "${CMAKE_SOURCE_DIR}/libversion" SHARED_LIBRARY_VERSION)
@ -75,12 +75,18 @@ option(ENABLE_PDF "Enable PDF" ON)
option(ENABLE_UTIL "Enable Util" ON)
option(ENABLE_NET "Enable Net" ON)
option(ENABLE_NETSSL "Enable NetSSL" ON)
option(ENABLE_NETSSL_WIN "Enable NetSSL Windows" ON)
option(ENABLE_CRYPTO "Enable Crypto" ON)
option(ENABLE_DATA "Enable Data" ON)
option(ENABLE_DATA_SQLITE "Enable Data SQlite" ON)
option(ENABLE_DATA_MYSQL "Enable Data MySQL" ON)
option(ENABLE_DATA_ODBC "Enable Data ODBC" ON)
option(ENABLE_SEVENZIP "Enable SevenZip" ON)
option(ENABLE_ZIP "Enable Zip" ON)
option(ENABLE_APACHECONNECTOR "Enable ApacheConnector" ON)
option(FORCE_OPENSSL "Force usage of OpenSSL even under windows" OFF)
option(ENABLE_TESTS
"Set to OFF|ON (default is OFF) to control build of POCO tests & samples" OFF)
@ -115,32 +121,21 @@ else ()
message(STATUS "Build with using internal copy of sqlite, libz, pcre, expat, ...")
endif ()
# Set local include path
include_directories( CppUnit/include CppUnit/WinTestRunner/include Foundation/include XML/include Net/include NetSSL_OpenSSL/include Util/include Data/include Data/MySQL/include Data/SQLite/include Data/ODBC/include Zip/include Crypto/include Web/include JSON/include MongoDB/include PDF/include SevenZip/include)
include(CheckTypeSize)
find_package(Cygwin)
#include(CMakeDetermineCompilerId)
# OS Detection
if(CMAKE_SYSTEM MATCHES "Windows")
if(WIN32)
add_definitions( -DPOCO_OS_FAMILY_WINDOWS -DUNICODE -D_UNICODE)
#set(SYSLIBS iphlpapi gdi32 odbc32)
endif(WIN32)
add_definitions( -DPOCO_OS_FAMILY_WINDOWS)
set(SYSLIBS iphlpapi gdi32 odbc32)
if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
message(STATUS "XXX: MS Visual Compiler detected")
endif (CMAKE_C_COMPILER_ID MATCHES "MSVC")
endif(CMAKE_SYSTEM MATCHES "Windows")
if (CMAKE_SYSTEM MATCHES "Linux" AND NOT ANDROID )
if (UNIX AND NOT ANDROID )
add_definitions( -DPOCO_OS_FAMILY_UNIX )
# Standard 'must be' defines
add_definitions( -D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64)
set(SYSLIBS pthread dl rt)
endif(CMAKE_SYSTEM MATCHES "Linux" AND NOT ANDROID )
endif(UNIX AND NOT ANDROID )
if (CMAKE_SYSTEM MATCHES "SunOS")
add_definitions( -DPOCO_OS_FAMILY_UNIX )
@ -150,15 +145,15 @@ if (CMAKE_SYSTEM MATCHES "SunOS")
endif(CMAKE_SYSTEM MATCHES "SunOS")
if (CMAKE_COMPILER_IS_MINGW)
add_definitions(-DWC_NO_BEST_FIT_CHARS=0x400 -DPOCO_WIN32_UTF8)
add_definitions(-mno-cygwin -D_WIN32 -DMINGW32 -DWINVER=0x500 -DODBCVER=0x0300 -DPOCO_THREAD_STACK_SIZE -DFoundation_Config_INCLUDED )
add_definitions(-DWC_NO_BEST_FIT_CHARS=0x400 -DPOCO_WIN32_UTF8)
add_definitions(-mno-cygwin -D_WIN32 -DMINGW32 -DWINVER=0x500 -DODBCVER=0x0300 -DPOCO_THREAD_STACK_SIZE -DFoundation_Config_INCLUDED )
link_directories(/usr/local/lib /usr/lib)
include_directories(/usr/local/include /usr/include)
endif (CMAKE_COMPILER_IS_MINGW)
if (CMAKE_COMPILER_IS_CYGWIN)
if (CYGWIN)
# add_definitions(-DWC_NO_BEST_FIT_CHARS=0x400 -DPOCO_WIN32_UTF8)
endif (CMAKE_COMPILER_IS_CYGWIN)
endif (CYGWIN)
# SunPro C++
if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
@ -170,10 +165,14 @@ if (IOS)
add_definitions( -DPOCO_HAVE_IPv6 -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_STAT64 -DPOCO_NO_SHAREDLIBS -DPOCO_NO_NET_IFTYPES )
endif(IOS)
#ANDROID
#Android
if (ANDROID)
add_definitions( -DPOCO_ANDROID -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY )
endif()
endif(ANDROID)
# Collect the built libraries and include dirs, the will be used to create the PocoConfig.cmake file
set(Poco_COMPONENTS "")
if (ENABLE_TESTS)
add_subdirectory(CppUnit)
@ -182,43 +181,62 @@ endif ()
add_subdirectory(Foundation)
if(ENABLE_XML)
add_subdirectory(XML)
list(APPEND Poco_COMPONENTS "XML")
endif()
if(ENABLE_JSON)
add_subdirectory(JSON)
list(APPEND Poco_COMPONENTS "JSON")
endif()
if(ENABLE_MONGODB)
add_subdirectory(MongoDB)
list(APPEND Poco_COMPONENTS "MongoDB")
endif()
if(ENABLE_PDF)
add_subdirectory(PDF)
list(APPEND Poco_COMPONENTS "PDF")
endif()
if(ENABLE_UTIL)
add_subdirectory(Util)
list(APPEND Poco_COMPONENTS "Util")
endif()
if(ENABLE_NET)
add_subdirectory(Net)
list(APPEND Poco_COMPONENTS "Net")
endif()
# OPENSSL_SSL_LIBRARY
#NetSSL
if(WIN32 AND ENABLE_NETSSL_WIN)
add_subdirectory(NetSSL_Win)
list(APPEND Poco_COMPONENTS "NetSSL_Win")
endif(WIN32 AND ENABLE_NETSSL_WIN)
find_package(OpenSSL)
if(OPENSSL_FOUND)
include_directories("${OPENSSL_INCLUDE_DIR}")
if(ENABLE_NETSSL)
add_subdirectory(NetSSL_OpenSSL)
list(APPEND Poco_COMPONENTS "NetSSL_OpenSSL")
endif()
if(ENABLE_CRYPTO)
add_subdirectory(Crypto)
list(APPEND Poco_COMPONENTS "Crypto")
endif()
endif(OPENSSL_FOUND)
if(ENABLE_DATA)
add_subdirectory(Data)
list(APPEND Poco_COMPONENTS "Data")
endif()
if(ENABLE_SEVENZIP)
add_subdirectory(SevenZip)
list(APPEND Poco_COMPONENTS "SevenZip")
endif()
if(ENABLE_ZIP)
add_subdirectory(Zip)
list(APPEND Poco_COMPONENTS "Zip")
endif()
find_package(APR)
@ -227,6 +245,7 @@ if(APRUTIL_FOUND AND APACHE_FOUND)
include_directories( "${APACHE_INCLUDE_DIR}" "${APRUTIL_INCLUDE_DIR}" )
if(ENABLE_APACHECONNECTOR)
add_subdirectory(ApacheConnector)
list(APPEND Poco_COMPONENTS "ApacheConnector")
endif()
endif(APRUTIL_FOUND AND APACHE_FOUND)
@ -253,9 +272,38 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "/usr/local")
include(CPack)
#############################################################
# cmake config files
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
configure_file(cmake/${PROJECT_NAME}Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" @ONLY)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION
"lib/cmake/${PROJECT_NAME}"
COMPONENT
Devel
)
# in tree build settings
#configure_file(PocoBuildTreeSettings.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/PocoBuildTreeSettings.cmake @ONLY)
message(STATUS "CMake ${CMAKE_VERSION} successfully configured ${PROJECT_NAME} using ${CMAKE_GENERATOR} generator")
message(STATUS "Installation target path: ${CMAKE_INSTALL_PREFIX}")
message(STATUS "C_FLAGS: =${CMAKE_C_FLAGS}")
message(STATUS "CXX_FLAGS:=${CMAKE_CXX_FLAGS}")
foreach(component ${Poco_COMPONENTS})
message(STATUS "Building: ${component}")
endforeach()

View File

@ -8,12 +8,18 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS} )
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION "1" SOVERSION "1"
DEFINE_SYMBOL CppUnit_EXPORTS)
target_link_libraries( ${LIBNAME} )
target_link_libraries( "${LIBNAME}" )
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
if(WIN32)
add_subdirectory(WinTestRunner)

View File

@ -13,15 +13,21 @@ POCO_HEADERS_AUTO( WIN_SRCS ${HDRS_G})
# TODO: Is this flag always required?
add_definitions("-D_AFXDLL")
#TODO: Use instead of the flag above: find_package(MFC)
include_directories( "src" )
add_library( ${LIBNAME} ${LIB_MODE} ${WIN_SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${WIN_SRCS} )
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION "1" SOVERSION "1"
DEFINE_SYMBOL WinTestRunner_EXPORTS)
target_link_libraries( ${LIBNAME} CppUnit )
target_link_libraries( "${LIBNAME}" CppUnit )
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
if(WIN32)
target_link_libraries( ${LIBNAME} winmm )
endif(WIN32)

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoCrypto")
set(LIBNAME "Crypto")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -8,29 +9,41 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
add_definitions(-D_USRDLL)
include_directories( "include" )
#add_definitions(-D_USRDLL)
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME}
PROPERTIES
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL Crypto_EXPORTS)
target_link_libraries( ${LIBNAME} PocoFoundation ${OPENSSL_LIBRARIES} )
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL Crypto_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation ${OPENSSL_LIBRARIES} )
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(samples)
add_subdirectory(testsuite)

View File

@ -0,0 +1,4 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
include("${CMAKE_CURRENT_LIST_DIR}/PocoCryptoTargets.cmake")

View File

@ -22,8 +22,10 @@
#include "Poco/Crypto/Crypto.h"
#include "Poco/Mutex.h"
#include <openssl/opensslconf.h>
#ifdef OPENSSL_FIPS
#include "Poco/AtomicCounter.h"
#include <openssl/crypto.h>
#include <openssl/opensslv.h>
#if defined(OPENSSL_FIPS) && OPENSSL_VERSION_NUMBER < 0x010001000L
#include <openssl/fips.h>
#endif
@ -81,8 +83,7 @@ protected:
private:
static Poco::FastMutex* _mutexes;
static Poco::FastMutex _mutex;
static int _rc;
static Poco::AtomicCounter _rc;
};
@ -109,6 +110,7 @@ inline void OpenSSLInitializer::enableFIPSMode(bool /*enabled*/)
}
#endif
} } // namespace Poco::Crypto

View File

@ -35,8 +35,7 @@ namespace Crypto {
Poco::FastMutex* OpenSSLInitializer::_mutexes(0);
Poco::FastMutex OpenSSLInitializer::_mutex;
int OpenSSLInitializer::_rc(0);
Poco::AtomicCounter OpenSSLInitializer::_rc;
OpenSSLInitializer::OpenSSLInitializer()
@ -60,8 +59,6 @@ OpenSSLInitializer::~OpenSSLInitializer()
void OpenSSLInitializer::initialize()
{
Poco::FastMutex::ScopedLock lock(_mutex);
if (++_rc == 1)
{
#if OPENSSL_VERSION_NUMBER >= 0x0907000L
@ -98,8 +95,6 @@ void OpenSSLInitializer::initialize()
void OpenSSLInitializer::uninitialize()
{
Poco::FastMutex::ScopedLock lock(_mutex);
if (--_rc == 0)
{
EVP_cleanup();
@ -109,6 +104,8 @@ void OpenSSLInitializer::uninitialize()
CRYPTO_set_id_callback(0);
#endif
delete [] _mutexes;
CONF_modules_free();
}
}

View File

@ -13,9 +13,6 @@ ifeq ($(POCO_CONFIG),FreeBSD)
SYSLIBS += -lssl -lcrypto -lz
else
SYSLIBS += -lssl -lcrypto -lz -ldl
ifeq ($(POCO_CONFIG),Linux)
SYSLIBS += -lkrb5
endif
endif
objects = CryptoTestSuite Driver \

View File

@ -4,8 +4,8 @@
#include "winres.h"
#define POCO_VERSION 1,5,4,0
#define POCO_VERSION_STR "1.5.4"
#define POCO_VERSION 1,6,0,0
#define POCO_VERSION_STR "1.6.0d1"
VS_VERSION_INFO VERSIONINFO
FILEVERSION POCO_VERSION

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoData")
set(LIBNAME "Data")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -17,29 +18,45 @@ if(MSVC AND NOT(MSVC_VERSION LESS 1400))
PROPERTIES COMPILE_FLAGS "/bigobj")
endif()
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL Data_EXPORTS)
target_link_libraries( ${LIBNAME} PocoFoundation)
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL Data_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation)
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if(ENABLE_DATA_SQLITE)
# SQlite3 is built in any case
add_subdirectory( SQLite )
endif(ENABLE_DATA_SQLITE)
if(ENABLE_DATA_MYSQL)
find_package(MySQL)
if(MYSQL_FOUND)
include_directories("${MYSQL_INCLUDE_DIR}")
@ -48,21 +65,24 @@ if(MYSQL_FOUND)
else()
message(STATUS "MySQL Support Disabled - no MySQL library")
endif(MYSQL_FOUND)
endif(ENABLE_DATA_MYSQL)
if(ENABLE_DATA_ODBC)
find_package(ODBC)
if(CMAKE_SYSTEM MATCHES "Windows")
set(ODBC_LIBRARIES "")
if(WIN32 AND NOT WINCE)
set(ODBC_LIBRARIES "odbc32" "odbccp32")
message(STATUS "Windows native ODBC Support Enabled")
add_subdirectory( ODBC )
else ()
if (ODBC_FOUND)
else(WIN32 AND NOT WINCE)
if(ODBC_FOUND)
include_directories("${ODBC_INCLUDE_DIRECTORIES}")
message(STATUS "ODBC Support Enabled")
add_subdirectory( ODBC )
else ()
else()
message(STATUS "ODBC Support Disabled - no ODBC runtime")
endif ()
endif()
endif()
endif(WIN32 AND NOT WINCE)
endif(ENABLE_DATA_ODBC)
if (ENABLE_TESTS)
add_subdirectory(samples)

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoDataMySQL")
set(LIBNAME "DataMySQL")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -10,28 +11,39 @@ POCO_HEADERS_AUTO( MYSQL_SRCS ${HDRS_G})
add_definitions(-DTHREADSAFE -DNO_TCL)
include_directories( "include" )
add_library( ${LIBNAME} ${LIB_MODE} ${MYSQL_SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${MYSQL_SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL MySQL_EXPORTS)
target_link_libraries( ${LIBNAME} PocoData PocoFoundation ${MYSQL_LIB})
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL MySQL_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation Data ${MYSQL_LIB})
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(testsuite)
endif ()

View File

@ -0,0 +1,5 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
find_dependency(PocoData)
include("${CMAKE_CURRENT_LIST_DIR}/PocoDataMySQLTargets.cmake")

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoDataODBC")
set(LIBNAME "DataODBC")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -8,30 +9,41 @@ POCO_SOURCES_AUTO( ODBC_SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( ODBC_SRCS ${HDRS_G})
add_definitions( ${ODBC_CFLAGS} )
add_definitions( ${ODBC_CFLAGS} -DTHREADSAFE)
include_directories( "include" )
add_library( ${LIBNAME} ${LIB_MODE} ${ODBC_SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${ODBC_SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL ODBC_EXPORTS)
target_link_libraries( ${LIBNAME} PocoData PocoFoundation ${ODBC_LIBRARIES})
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL ODBC_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation Data ${ODBC_LIBRARIES})
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(testsuite)
endif ()

View File

@ -0,0 +1,5 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
find_dependency(PocoData)
include("${CMAKE_CURRENT_LIST_DIR}/PocoDataODBCTargets.cmake")

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoDataSQLite")
set(LIBNAME "DataSQLite")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -8,11 +9,9 @@ POCO_SOURCES_AUTO( SQLITE_SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SQLITE_SRCS ${HDRS_G})
include_directories( "include" "src" )
if (POCO_UNBUNDLED)
find_package(SQLite3)
set(DATASQLITELIBS PocoData PocoFoundation ${SQLITE3_LIBRARIES})
set(DATASQLITELIBS ${SQLITE3_LIBRARIES})
include_directories("${SQLITE3_INCLUDE_DIRS}")
else()
# sqlite3
@ -24,31 +23,48 @@ else()
src/sqlite3.h
)
set(DATASQLITELIBS PocoData PocoFoundation)
set(DATASQLITELIBS "")
endif()
if(WINCE)
add_definitions(-DSQLITE_MSVC_LOCALTIME_API)
endif(WINCE)
add_definitions(-DSQLITE_THREADSAFE=1 -DSQLITE_DISABLE_LFS -DSQLITE_OMIT_UTF16 -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_COMPLETE -DSQLITE_OMIT_TCL_VARIABLE -DSQLITE_OMIT_DEPRECATED)
add_library( ${LIBNAME} ${LIB_MODE} ${SQLITE_SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${SQLITE_SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL SQLite_EXPORTS)
target_link_libraries( ${LIBNAME} ${DATASQLITELIBS} )
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL SQLite_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation Data ${DATASQLITELIBS} )
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(testsuite)
endif ()

View File

@ -0,0 +1,5 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
find_dependency(PocoData)
include("${CMAKE_CURRENT_LIST_DIR}/PocoDataSQLiteTargets.cmake")

View File

@ -28,6 +28,11 @@
#include <cstdlib>
#ifndef SQLITE_OPEN_URI
#define SQLITE_OPEN_URI 0
#endif
namespace Poco {
namespace Data {
namespace SQLite {
@ -150,7 +155,7 @@ private:
inline int connectImpl()
{
return sqlite3_open(_connectString.c_str(), _ppDB);
return sqlite3_open_v2(_connectString.c_str(), _ppDB, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_URI, NULL);
}
std::string _connectString;
@ -184,7 +189,8 @@ void SessionImpl::open(const std::string& connect)
close();
Utility::throwException(rc);
}
} catch (SQLiteException& ex)
}
catch (SQLiteException& ex)
{
throw ConnectionFailedException(ex.displayText());
}

View File

@ -29,6 +29,11 @@
#endif
#ifndef SQLITE_OPEN_URI
#define SQLITE_OPEN_URI 0
#endif
namespace Poco {
namespace Data {
namespace SQLite {
@ -55,6 +60,7 @@ const std::string Utility::SQLITE_TIME_FORMAT = "%H:%M:%S";
Utility::TypeMap Utility::_types;
Poco::Mutex Utility::_mutex;
Utility::Utility()
{
Poco::Mutex::ScopedLock l(_mutex);
@ -158,6 +164,8 @@ void Utility::throwException(int rc, const std::string& addErrMsg)
case SQLITE_ABORT:
throw ExecutionAbortedException(std::string("Callback routine requested an abort"), addErrMsg);
case SQLITE_BUSY:
case SQLITE_BUSY_RECOVERY:
case SQLITE_BUSY_SNAPSHOT:
throw DBLockedException(std::string("The database file is locked"), addErrMsg);
case SQLITE_LOCKED:
throw TableLockedException(std::string("A table in the database is locked"), addErrMsg);
@ -217,7 +225,7 @@ bool Utility::fileToMemory(sqlite3* pInMemory, const std::string& fileName)
sqlite3* pFile;
sqlite3_backup* pBackup;
rc = sqlite3_open(fileName.c_str(), &pFile);
rc = sqlite3_open_v2(fileName.c_str(), &pFile, SQLITE_OPEN_READONLY | SQLITE_OPEN_URI, NULL);
if(rc == SQLITE_OK )
{
pBackup = sqlite3_backup_init(pInMemory, "main", pFile, "main");
@ -240,7 +248,7 @@ bool Utility::memoryToFile(const std::string& fileName, sqlite3* pInMemory)
sqlite3* pFile;
sqlite3_backup* pBackup;
rc = sqlite3_open(fileName.c_str(), &pFile);
rc = sqlite3_open_v2(fileName.c_str(), &pFile, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_URI, NULL);
if(rc == SQLITE_OK )
{
pBackup = sqlite3_backup_init(pFile, "main", pInMemory, "main");
@ -306,6 +314,4 @@ void* Utility::eventHookRegister(sqlite3* pDB, RollbackCallbackType callbackFn,
}
} } } // namespace Poco::Data::SQLite

File diff suppressed because it is too large Load Diff

View File

@ -107,9 +107,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
#define SQLITE_VERSION "3.8.6"
#define SQLITE_VERSION_NUMBER 3008006
#define SQLITE_SOURCE_ID "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e"
#define SQLITE_VERSION "3.8.7.2"
#define SQLITE_VERSION_NUMBER 3008007
#define SQLITE_SOURCE_ID "2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93"
/*
** CAPI3REF: Run-Time Library Version Numbers
@ -497,6 +497,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
/*
** CAPI3REF: Flags For File Open Operations
@ -2099,7 +2100,7 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
** turns off all busy handlers.
**
** ^(There can only be a single busy handler for a particular
** [database connection] any any given moment. If another busy handler
** [database connection] at any given moment. If another busy handler
** was defined (using [sqlite3_busy_handler()]) prior to calling
** this routine, that other busy handler is cleared.)^
**
@ -2303,6 +2304,10 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
** a NULL pointer.
**
** ^The sqlite3_malloc64(N) routine works just like
** sqlite3_malloc(N) except that N is an unsigned 64-bit integer instead
** of a signed 32-bit integer.
**
** ^Calling sqlite3_free() with a pointer previously returned
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
** that it might be reused. ^The sqlite3_free() routine is
@ -2314,24 +2319,38 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** might result if sqlite3_free() is called with a non-NULL pointer that
** was not obtained from sqlite3_malloc() or sqlite3_realloc().
**
** ^(The sqlite3_realloc() interface attempts to resize a
** prior memory allocation to be at least N bytes, where N is the
** second parameter. The memory allocation to be resized is the first
** parameter.)^ ^ If the first parameter to sqlite3_realloc()
** ^The sqlite3_realloc(X,N) interface attempts to resize a
** prior memory allocation X to be at least N bytes.
** ^If the X parameter to sqlite3_realloc(X,N)
** is a NULL pointer then its behavior is identical to calling
** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc().
** ^If the second parameter to sqlite3_realloc() is zero or
** sqlite3_malloc(N).
** ^If the N parameter to sqlite3_realloc(X,N) is zero or
** negative then the behavior is exactly the same as calling
** sqlite3_free(P) where P is the first parameter to sqlite3_realloc().
** ^sqlite3_realloc() returns a pointer to a memory allocation
** of at least N bytes in size or NULL if sufficient memory is unavailable.
** sqlite3_free(X).
** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
** of at least N bytes in size or NULL if insufficient memory is available.
** ^If M is the size of the prior allocation, then min(N,M) bytes
** of the prior allocation are copied into the beginning of buffer returned
** by sqlite3_realloc() and the prior allocation is freed.
** ^If sqlite3_realloc() returns NULL, then the prior allocation
** is not freed.
** by sqlite3_realloc(X,N) and the prior allocation is freed.
** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
** prior allocation is not freed.
**
** ^The memory returned by sqlite3_malloc() and sqlite3_realloc()
** ^The sqlite3_realloc64(X,N) interfaces works the same as
** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
** of a 32-bit signed integer.
**
** ^If X is a memory allocation previously obtained from sqlite3_malloc(),
** sqlite3_malloc64(), sqlite3_realloc(), or sqlite3_realloc64(), then
** sqlite3_msize(X) returns the size of that memory allocation in bytes.
** ^The value returned by sqlite3_msize(X) might be larger than the number
** of bytes requested when X was allocated. ^If X is a NULL pointer then
** sqlite3_msize(X) returns zero. If X points to something that is not
** the beginning of memory allocation, or if it points to a formerly
** valid memory allocation that has now been freed, then the behavior
** of sqlite3_msize(X) is undefined and possibly harmful.
**
** ^The memory returned by sqlite3_malloc(), sqlite3_realloc(),
** sqlite3_malloc64(), and sqlite3_realloc64()
** is always aligned to at least an 8 byte boundary, or to a
** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
** option is used.
@ -2359,8 +2378,11 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** [sqlite3_free()] or [sqlite3_realloc()].
*/
SQLITE_API void *sqlite3_malloc(int);
SQLITE_API void *sqlite3_malloc64(sqlite3_uint64);
SQLITE_API void *sqlite3_realloc(void*, int);
SQLITE_API void *sqlite3_realloc64(void*, sqlite3_uint64);
SQLITE_API void sqlite3_free(void*);
SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
/*
** CAPI3REF: Memory Allocator Statistics
@ -2647,9 +2669,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** an English language description of the error following a failure of any
** of the sqlite3_open() routines.
**
** ^The default encoding for the database will be UTF-8 if
** sqlite3_open() or sqlite3_open_v2() is called and
** UTF-16 in the native byte order if sqlite3_open16() is used.
** ^The default encoding will be UTF-8 for databases created using
** sqlite3_open() or sqlite3_open_v2(). ^The default encoding for databases
** created using sqlite3_open16() will be UTF-16 in the native byte order.
**
** Whether or not an error occurs when it is opened, resources
** associated with the [database connection] handle should be released by
@ -2737,13 +2759,14 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** then it is interpreted as an absolute path. ^If the path does not begin
** with a '/' (meaning that the authority section is omitted from the URI)
** then the path is interpreted as a relative path.
** ^On windows, the first component of an absolute path
** is a drive specification (e.g. "C:").
** ^(On windows, the first component of an absolute path
** is a drive specification (e.g. "C:").)^
**
** [[core URI query parameters]]
** The query component of a URI may contain parameters that are interpreted
** either by SQLite itself, or by a [VFS | custom VFS implementation].
** SQLite interprets the following three query parameters:
** SQLite and its built-in [VFSes] interpret the
** following query parameters:
**
** <ul>
** <li> <b>vfs</b>: ^The "vfs" parameter may be used to specify the name of
@ -2778,11 +2801,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** a URI filename, its value overrides any behavior requested by setting
** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
**
** <li> <b>psow</b>: ^The psow parameter may be "true" (or "on" or "yes" or
** "1") or "false" (or "off" or "no" or "0") to indicate that the
** <li> <b>psow</b>: ^The psow parameter indicates whether or not the
** [powersafe overwrite] property does or does not apply to the
** storage media on which the database file resides. ^The psow query
** parameter only works for the built-in unix and Windows VFSes.
** storage media on which the database file resides.
**
** <li> <b>nolock</b>: ^The nolock parameter is a boolean query parameter
** which if set disables file locking in rollback journal modes. This
@ -3078,6 +3099,10 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
**
** [[SQLITE_LIMIT_TRIGGER_DEPTH]] ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
** <dd>The maximum depth of recursion for triggers.</dd>)^
**
** [[SQLITE_LIMIT_WORKER_THREADS]] ^(<dt>SQLITE_LIMIT_WORKER_THREADS</dt>
** <dd>The maximum number of auxiliary worker threads that a single
** [prepared statement] may start.</dd>)^
** </dl>
*/
#define SQLITE_LIMIT_LENGTH 0
@ -3091,6 +3116,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8
#define SQLITE_LIMIT_VARIABLE_NUMBER 9
#define SQLITE_LIMIT_TRIGGER_DEPTH 10
#define SQLITE_LIMIT_WORKER_THREADS 11
/*
** CAPI3REF: Compiling An SQL Statement
@ -3364,18 +3390,18 @@ typedef struct sqlite3_context sqlite3_context;
** If the fourth parameter to sqlite3_bind_blob() is negative, then
** the behavior is undefined.
** If a non-negative fourth parameter is provided to sqlite3_bind_text()
** or sqlite3_bind_text16() then that parameter must be the byte offset
** or sqlite3_bind_text16() or sqlite3_bind_text64() then
** that parameter must be the byte offset
** where the NUL terminator would occur assuming the string were NUL
** terminated. If any NUL characters occur at byte offsets less than
** the value of the fourth parameter then the resulting string value will
** contain embedded NULs. The result of expressions involving strings
** with embedded NULs is undefined.
**
** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
** ^The fifth argument to the BLOB and string binding interfaces
** is a destructor used to dispose of the BLOB or
** string after SQLite has finished with it. ^The destructor is called
** to dispose of the BLOB or string even if the call to sqlite3_bind_blob(),
** sqlite3_bind_text(), or sqlite3_bind_text16() fails.
** to dispose of the BLOB or string even if the call to bind API fails.
** ^If the fifth argument is
** the special value [SQLITE_STATIC], then SQLite assumes that the
** information is in static, unmanaged space and does not need to be freed.
@ -3383,6 +3409,14 @@ typedef struct sqlite3_context sqlite3_context;
** SQLite makes its own private copy of the data immediately, before
** the sqlite3_bind_*() routine returns.
**
** ^The sixth argument to sqlite3_bind_text64() must be one of
** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
** to specify the encoding of the text in the third parameter. If
** the sixth argument to sqlite3_bind_text64() is not one of the
** allowed values shown above, or if the text encoding is different
** from the encoding specified by the sixth parameter, then the behavior
** is undefined.
**
** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
** is filled with zeroes. ^A zeroblob uses a fixed amount of memory
** (just an integer to hold its size) while it is being processed.
@ -3403,6 +3437,9 @@ typedef struct sqlite3_context sqlite3_context;
**
** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an
** [error code] if anything goes wrong.
** ^[SQLITE_TOOBIG] might be returned if the size of a string or BLOB
** exceeds limits imposed by [sqlite3_limit]([SQLITE_LIMIT_LENGTH]) or
** [SQLITE_MAX_LENGTH].
** ^[SQLITE_RANGE] is returned if the parameter
** index is out of range. ^[SQLITE_NOMEM] is returned if malloc() fails.
**
@ -3410,12 +3447,16 @@ typedef struct sqlite3_context sqlite3_context;
** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
*/
SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
SQLITE_API int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
void(*)(void*));
SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
SQLITE_API int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
void(*)(void*), unsigned char encoding);
SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
@ -4164,7 +4205,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
** object results in undefined behavior.
**
** ^These routines work just like the corresponding [column access functions]
** except that these routines take a single [protected sqlite3_value] object
** except that these routines take a single [protected sqlite3_value] object
** pointer instead of a [sqlite3_stmt*] pointer and an integer column number.
**
** ^The sqlite3_value_text16() interface extracts a UTF-16 string
@ -4411,6 +4452,10 @@ typedef void (*sqlite3_destructor_type)(void*);
** set the return value of the application-defined function to be
** a text string which is represented as UTF-8, UTF-16 native byte order,
** UTF-16 little endian, or UTF-16 big endian, respectively.
** ^The sqlite3_result_text64() interface sets the return value of an
** application-defined function to be a text string in an encoding
** specified by the fifth (and last) parameter, which must be one
** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
** ^SQLite takes the text result from the application from
** the 2nd parameter of the sqlite3_result_text* interfaces.
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
@ -4454,6 +4499,7 @@ typedef void (*sqlite3_destructor_type)(void*);
** the [sqlite3_context] pointer, the results are undefined.
*/
SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,sqlite3_uint64,void(*)(void*));
SQLITE_API void sqlite3_result_double(sqlite3_context*, double);
SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
@ -4464,6 +4510,8 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
SQLITE_API void sqlite3_result_null(sqlite3_context*);
SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
void(*)(void*), unsigned char encoding);
SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
@ -6160,12 +6208,13 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_ISKEYWORD 16
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19
#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
#define SQLITE_TESTCTRL_NEVER_CORRUPT 20
#define SQLITE_TESTCTRL_VDBE_COVERAGE 21
#define SQLITE_TESTCTRL_BYTEORDER 22
#define SQLITE_TESTCTRL_ISINIT 23
#define SQLITE_TESTCTRL_LAST 23
#define SQLITE_TESTCTRL_SORTER_MMAP 24
#define SQLITE_TESTCTRL_LAST 24
/*
** CAPI3REF: SQLite Runtime Status
@ -6356,12 +6405,12 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
** the current value is always zero.)^
**
** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
** <dd>This parameter returns the approximate number of of bytes of heap
** <dd>This parameter returns the approximate number of bytes of heap
** memory used by all pager caches associated with the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
**
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
** <dd>This parameter returns the approximate number of of bytes of heap
** <dd>This parameter returns the approximate number of bytes of heap
** memory used to store the schema for all databases associated
** with the connection - main, temp, and any [ATTACH]-ed databases.)^
** ^The full amount of memory used by the schemas is reported, even if the
@ -6370,7 +6419,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
**
** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
** <dd>This parameter returns the approximate number of of bytes of heap
** <dd>This parameter returns the approximate number of bytes of heap
** and lookaside memory used by all prepared statements associated with
** the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0.

View File

@ -0,0 +1,4 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
include("${CMAKE_CURRENT_LIST_DIR}/PocoDataTargets.cmake")

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoFoundation")
set(LIBNAME "Foundation")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -15,10 +16,18 @@ POCO_HEADERS_AUTO( SRCS include/Poco/OpcomChannel.h )
POCO_SOURCES_AUTO_PLAT( SRCS UNIX src/SyslogChannel.cpp )
POCO_HEADERS_AUTO( SRCS include/Poco/SyslogChannel.h )
# For Windows CE we need to disable these
if(WINCE)
POCO_SOURCES_AUTO_PLAT( SRCS OFF
src/WindowsConsoleChannel.cpp
src/EventLogChannel.cpp
)
else()
POCO_SOURCES_AUTO_PLAT( SRCS WIN32
src/WindowsConsoleChannel.cpp
src/EventLogChannel.cpp
)
endif()
POCO_HEADERS_AUTO( SRCS
include/Poco/WindowsConsoleChannel.h
@ -90,36 +99,50 @@ else()
)
endif (POCO_UNBUNDLED)
if(CMAKE_SYSTEM MATCHES "Windows")
add_definitions( -DPCRE_STATIC)
if(WIN32)
set(SYSLIBS ${SYSLIBS} iphlpapi)
else (CMAKE_SYSTEM MATCHES "Windows")
add_definitions( -DPCRE_STATIC)
endif(CMAKE_SYSTEM MATCHES "Windows")
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS})
set_target_properties( ${LIBNAME}
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL Foundation_EXPORTS)
endif(WIN32)
if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
set_target_properties( ${LIBNAME} PROPERTIES LINK_FLAGS "-library=stlport4")
set_target_properties( "${LIBNAME}" PROPERTIES LINK_FLAGS "-library=stlport4")
endif (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
target_link_libraries( ${LIBNAME} ${SYSLIBS})
# TODO: Why is this here?
add_definitions( -DPCRE_STATIC)
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS})
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${PROJECT_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL Foundation_EXPORTS
)
target_link_libraries( "${LIBNAME}" ${SYSLIBS})
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory( samples )
add_subdirectory( testsuite )

View File

@ -0,0 +1 @@
include("${CMAKE_CURRENT_LIST_DIR}/PocoFoundationTargets.cmake")

View File

@ -40,7 +40,7 @@ class Foundation_API Bugcheck
/// automatically provide useful context information.
{
public:
static void assertion(const char* cond, const char* file, int line);
static void assertion(const char* cond, const char* file, int line, const char* text = 0);
/// An assertion failed. Break into the debugger, if
/// possible, then throw an AssertionViolationException.
@ -71,7 +71,7 @@ public:
/// possible.
protected:
static std::string what(const char* msg, const char* file, int line);
static std::string what(const char* msg, const char* file, int line, const char* text = 0);
};
@ -84,7 +84,11 @@ protected:
#if defined(_DEBUG)
#define poco_assert_dbg(cond) \
if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__); else (void) 0
#define poco_assert_msg_dbg(cond, text) \
if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__, text); else (void) 0
#else
#define poco_assert_msg_dbg(cond, text)
#define poco_assert_dbg(cond)
#endif
@ -93,6 +97,10 @@ protected:
if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__); else (void) 0
#define poco_assert_msg(cond, text) \
if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__, text); else (void) 0
#define poco_check_ptr(ptr) \
if (!(ptr)) Poco::Bugcheck::nullPointer(#ptr, __FILE__, __LINE__); else (void) 0

View File

@ -48,6 +48,9 @@ public:
typedef Int64 ClockVal; /// monotonic clock value in microsecond resolution
typedef Int64 ClockDiff; /// difference between two clock values in microseconds
static const ClockVal CLOCKVAL_MIN; /// minimum clock value
static const ClockVal CLOCKVAL_MAX; /// maximum clock value
Clock();
/// Creates a Clock with the current system clock value.

View File

@ -47,6 +47,14 @@ class Foundation_API DateTimeParser
/// additional specifier is supported: %r will parse a year given by either
/// two or four digits. Years 69-00 are interpreted in the 20th century
/// (1969-2000), years 01-68 in the 21th century (2001-2068).
///
/// Note that in the current implementation all characters other than format specifiers in
/// the format string are ignored/not matched against the date/time string. This may
/// lead to non-error results even with nonsense input strings.
/// This may change in a future version to a more strict behavior.
/// If more strict format validation of date/time strings is required, a regular
/// expression could be used for initial validation, before passing the string
/// to DateTimeParser.
{
public:
static void parse(const std::string& fmt, const std::string& str, DateTime& dateTime, int& timeZoneDifferential);

View File

@ -542,6 +542,7 @@ private:
static Var parseObject(const std::string& val, std::string::size_type& pos);
static Var parseArray(const std::string& val, std::string::size_type& pos);
static std::string parseString(const std::string& val, std::string::size_type& pos);
static std::string parseJSONString(const std::string& val, std::string::size_type& pos);
static void skipWhiteSpace(const std::string& val, std::string::size_type& pos);
template <typename T>

View File

@ -33,9 +33,15 @@ class Foundation_API Error
public:
#ifdef POCO_OS_FAMILY_WINDOWS
static DWORD last();
/// Utility function returning the last error.
static std::string getMessage(DWORD errorCode);
/// Utility function translating numeric error code to string.
#else
static int last();
/// Utility function returning the last error.
static std::string getMessage(int errorCode);
/// Utility function translating numeric error code to string.
#endif

View File

@ -109,6 +109,10 @@ std::string Foundation_API format(const std::string& fmt, const Any& value1, con
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
std::string Foundation_API format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value);
@ -119,6 +123,10 @@ void Foundation_API format(std::string& result, const std::string& fmt, const An
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void Foundation_API format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void Foundation_API format(std::string& result, const std::string& fmt, const std::vector<Any>& values);

View File

@ -158,6 +158,10 @@ public:
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void critical(const std::string& msg);
/// If the Logger's log level is at least PRIO_CRITICAL,
@ -181,6 +185,10 @@ public:
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void error(const std::string& msg);
/// If the Logger's log level is at least PRIO_ERROR,
@ -204,6 +212,10 @@ public:
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void warning(const std::string& msg);
/// If the Logger's log level is at least PRIO_WARNING,
@ -227,6 +239,10 @@ public:
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void notice(const std::string& msg);
/// If the Logger's log level is at least PRIO_NOTICE,
@ -250,6 +266,10 @@ public:
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void information(const std::string& msg);
/// If the Logger's log level is at least PRIO_INFORMATION,
@ -273,6 +293,10 @@ public:
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void debug(const std::string& msg);
/// If the Logger's log level is at least PRIO_DEBUG,
@ -296,6 +320,10 @@ public:
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void trace(const std::string& msg);
/// If the Logger's log level is at least PRIO_TRACE,
@ -319,6 +347,10 @@ public:
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7);
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8);
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9);
void trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10);
void dump(const std::string& msg, const void* buffer, std::size_t length, Message::Priority prio = Message::PRIO_DEBUG);
/// Logs the given message, followed by the data in buffer.
@ -700,6 +732,30 @@ inline void Logger::fatal(const std::string& fmt, const Any& value1, const Any&
}
inline void Logger::fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_FATAL);
}
inline void Logger::fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_FATAL);
}
inline void Logger::fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_FATAL);
}
inline void Logger::fatal(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_FATAL);
}
inline void Logger::critical(const std::string& msg)
{
log(msg, Message::PRIO_CRITICAL);
@ -748,6 +804,30 @@ inline void Logger::critical(const std::string& fmt, const Any& value1, const An
}
inline void Logger::critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_CRITICAL);
}
inline void Logger::critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_CRITICAL);
}
inline void Logger::critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_CRITICAL);
}
inline void Logger::critical(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_CRITICAL);
}
inline void Logger::error(const std::string& msg)
{
log(msg, Message::PRIO_ERROR);
@ -796,6 +876,30 @@ inline void Logger::error(const std::string& fmt, const Any& value1, const Any&
}
inline void Logger::error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_ERROR);
}
inline void Logger::error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_ERROR);
}
inline void Logger::error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_ERROR);
}
inline void Logger::error(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_ERROR);
}
inline void Logger::warning(const std::string& msg)
{
log(msg, Message::PRIO_WARNING);
@ -844,6 +948,30 @@ inline void Logger::warning(const std::string& fmt, const Any& value1, const Any
}
inline void Logger::warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_WARNING);
}
inline void Logger::warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_WARNING);
}
inline void Logger::warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_WARNING);
}
inline void Logger::warning(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_WARNING);
}
inline void Logger::notice(const std::string& msg)
{
log(msg, Message::PRIO_NOTICE);
@ -892,6 +1020,30 @@ inline void Logger::notice(const std::string& fmt, const Any& value1, const Any&
}
inline void Logger::notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_NOTICE);
}
inline void Logger::notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_NOTICE);
}
inline void Logger::notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_NOTICE);
}
inline void Logger::notice(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_NOTICE);
}
inline void Logger::information(const std::string& msg)
{
log(msg, Message::PRIO_INFORMATION);
@ -940,6 +1092,30 @@ inline void Logger::information(const std::string& fmt, const Any& value1, const
}
inline void Logger::information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_INFORMATION);
}
inline void Logger::information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_INFORMATION);
}
inline void Logger::information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_INFORMATION);
}
inline void Logger::information(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_INFORMATION);
}
inline void Logger::debug(const std::string& msg)
{
log(msg, Message::PRIO_DEBUG);
@ -988,6 +1164,30 @@ inline void Logger::debug(const std::string& fmt, const Any& value1, const Any&
}
inline void Logger::debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_DEBUG);
}
inline void Logger::debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_DEBUG);
}
inline void Logger::debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_DEBUG);
}
inline void Logger::debug(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_DEBUG);
}
inline void Logger::trace(const std::string& msg)
{
log(msg, Message::PRIO_TRACE);
@ -1036,6 +1236,30 @@ inline void Logger::trace(const std::string& fmt, const Any& value1, const Any&
}
inline void Logger::trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7), Message::PRIO_TRACE);
}
inline void Logger::trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8), Message::PRIO_TRACE);
}
inline void Logger::trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9), Message::PRIO_TRACE);
}
inline void Logger::trace(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
log(Poco::format(fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10), Message::PRIO_TRACE);
}
inline bool Logger::is(int level) const
{
return _level >= level;

View File

@ -121,10 +121,11 @@ protected:
/// Returns a string for the given priority value.
private:
struct PatternAction
{
PatternAction(): key(0), length(0) {}
PatternAction(): key(0), length(0)
{
}
char key;
int length;
@ -132,16 +133,14 @@ private:
std::string prepend;
};
std::vector<PatternAction> _patternActions;
bool _localTime;
Timestamp::TimeDiff _localTimeOffset;
std::string _pattern;
void ParsePattern();
void parsePattern();
/// Will parse the _pattern string into the vector of PatternActions,
/// which contains the message key, any text that needs to be written first
/// a proprety in case of %[] and required length.
std::vector<PatternAction> _patternActions;
bool _localTime;
std::string _pattern;
};

View File

@ -122,7 +122,7 @@ public:
/// May return 0 if the priority has not been explicitly set.
static int getMinOSPriority(int policy = POLICY_DEFAULT);
/// Returns the mininum operating system-specific priority value,
/// Returns the minimum operating system-specific priority value,
/// which can be passed to setOSPriority() for the given policy.
static int getMaxOSPriority(int policy = POLICY_DEFAULT);
@ -149,6 +149,13 @@ public:
void start(Callable target, void* pData = 0);
/// Starts the thread with the given target and parameter.
template <class Functor>
void startFunc(Functor fn)
/// Starts the thread with the given functor object or lambda.
{
startImpl(new FunctorRunnable<Functor>(fn));
}
void join();
/// Waits until the thread completes execution.
/// If multiple threads try to join the same
@ -221,7 +228,29 @@ protected:
static int uniqueId();
/// Creates and returns a unique id for a thread.
template <class Functor>
class FunctorRunnable: public Runnable
{
public:
FunctorRunnable(const Functor& functor):
_functor(functor)
{
}
~FunctorRunnable()
{
}
void run()
{
_functor();
}
private:
Functor _functor;
};
private:
Thread(const Thread&);
Thread& operator = (const Thread&);

View File

@ -26,6 +26,7 @@
#include "Poco/Event.h"
#include "Poco/RefCountedObject.h"
#include "Poco/AutoPtr.h"
#include "Poco/SharedPtr.h"
#include <pthread.h>
// must be limits.h (not <climits>) for PTHREAD_STACK_MIN on Solaris
#include <limits.h>
@ -61,16 +62,6 @@ public:
POLICY_DEFAULT_IMPL = SCHED_OTHER
};
struct CallbackData: public RefCountedObject
{
CallbackData(): callback(0), pData(0)
{
}
Callable callback;
void* pData;
};
ThreadImpl();
~ThreadImpl();
@ -83,9 +74,7 @@ public:
static int getMaxOSPriorityImpl(int policy);
void setStackSizeImpl(int size);
int getStackSizeImpl() const;
void startImpl(Runnable& target);
void startImpl(Callable target, void* pData = 0);
void startImpl(SharedPtr<Runnable> pTarget);
void joinImpl();
bool joinImpl(long milliseconds);
bool isRunningImpl() const;
@ -96,7 +85,6 @@ public:
protected:
static void* runnableEntry(void* pThread);
static void* callableEntry(void* pThread);
static int mapPrio(int prio, int policy = SCHED_OTHER);
static int reverseMapPrio(int osPrio, int policy = SCHED_OTHER);
@ -129,8 +117,6 @@ private:
struct ThreadData: public RefCountedObject
{
ThreadData():
pRunnableTarget(0),
pCallbackTarget(0),
thread(0),
prio(PRIO_NORMAL_IMPL),
policy(SCHED_OTHER),
@ -146,8 +132,7 @@ private:
#endif
}
Runnable* pRunnableTarget;
AutoPtr<CallbackData> pCallbackTarget;
SharedPtr<Runnable> pRunnableTarget;
pthread_t thread;
int prio;
int osPrio;
@ -186,8 +171,7 @@ inline int ThreadImpl::getOSPriorityImpl() const
inline bool ThreadImpl::isRunningImpl() const
{
return _pData->pRunnableTarget != 0 ||
(_pData->pCallbackTarget.get() != 0 && _pData->pCallbackTarget->callback != 0);
return !_pData->pRunnableTarget.isNull();
}

View File

@ -22,6 +22,7 @@
#include "Poco/Foundation.h"
#include "Poco/Runnable.h"
#include "Poco/SharedPtr.h"
#include "Poco/UnWindows.h"
@ -40,16 +41,6 @@ public:
typedef unsigned (__stdcall *Entry)(void*);
#endif
struct CallbackData
{
CallbackData(): callback(0), pData(0)
{
}
Callable callback;
void* pData;
};
enum Priority
{
PRIO_LOWEST_IMPL = THREAD_PRIORITY_LOWEST,
@ -76,9 +67,7 @@ public:
static int getMaxOSPriorityImpl(int policy);
void setStackSizeImpl(int size);
int getStackSizeImpl() const;
void startImpl(Runnable& target);
void startImpl(Callable target, void* pData = 0);
void startImpl(SharedPtr<Runnable> pTarget);
void joinImpl();
bool joinImpl(long milliseconds);
bool isRunningImpl() const;
@ -94,12 +83,6 @@ protected:
static unsigned __stdcall runnableEntry(void* pThread);
#endif
#if defined(_DLL)
static DWORD WINAPI callableEntry(LPVOID pThread);
#else
static unsigned __stdcall callableEntry(void* pThread);
#endif
void createImpl(Entry ent, void* pData);
void threadCleanup();
@ -129,12 +112,11 @@ private:
DWORD _slot;
};
Runnable* _pRunnableTarget;
CallbackData _callbackTarget;
HANDLE _thread;
DWORD _threadId;
int _prio;
int _stackSize;
SharedPtr<Runnable> _pRunnableTarget;
HANDLE _thread;
DWORD _threadId;
int _prio;
int _stackSize;
static CurrentThreadHolder _currentThreadHolder;
};

View File

@ -28,6 +28,7 @@ namespace Poco {
class Timespan;
class Foundation_API Timestamp
/// A Timestamp stores a monotonic* time value
/// with (theoretical) microseconds resolution.
@ -47,6 +48,9 @@ public:
typedef Int64 UtcTimeVal; /// monotonic UTC time value in 100 nanosecond resolution
typedef Int64 TimeDiff; /// difference between two timestamps in microseconds
static const TimeVal TIMEVAL_MIN; /// minimum timestamp value
static const TimeVal TIMEVAL_MAX; /// maximum timestamp value
Timestamp();
/// Creates a timestamp with the current time.

View File

@ -22,6 +22,7 @@
#include "Poco/Foundation.h"
#include <vector>
#include <utility>
namespace Poco {
@ -40,11 +41,13 @@ class Foundation_API URI
///
/// The class automatically performs a few normalizations on
/// all URIs and URI parts passed to it:
/// * scheme identifiers are converted to lower case.
/// * scheme identifiers are converted to lower case
/// * percent-encoded characters are decoded
/// * optionally, dot segments are removed from paths (see normalize())
{
public:
typedef std::vector<std::pair<std::string, std::string> > QueryParameters;
URI();
/// Creates an empty URI.
@ -159,10 +162,30 @@ public:
/// Sets the path part of the URI.
std::string getQuery() const;
/// Returns the query part of the URI.
/// Returns the decoded query part of the URI.
///
/// Note that encoded ampersand characters ('&', "%26")
/// will be decoded, which could cause ambiguities if the query
/// string contains multiple parameters and a parameter name
/// or value contains an ampersand as well.
/// In such a case it's better to use getRawQuery() or
/// getQueryParameters().
void setQuery(const std::string& query);
/// Sets the query part of the URI.
///
/// The query string will be percent-encoded. If the query
/// already contains percent-encoded characters, these
/// will be double-encoded, which is probably not what's
/// intended by the caller. Furthermore, ampersand ('&')
/// characters in the query will not be encoded. This could
/// lead to ambiguity issues if the query string contains multiple
/// name-value parameters separated by ampersand, and if any
/// name or value also contains an ampersand. In such a
/// case, it's better to use setRawQuery() with a properly
/// percent-encoded query string, or use addQueryParameter()
/// or setQueryParameters(), which take care of appropriate
/// percent encoding of parameter names and values.
void addQueryParameter(const std::string& param, const std::string& val = "");
/// Adds "param=val" to the query; "param" may not be empty.
@ -172,11 +195,24 @@ public:
/// if found in param or val.
const std::string& getRawQuery() const;
/// Returns the unencoded query part of the URI.
/// Returns the query string in raw form, which usually
/// means percent encoded.
void setRawQuery(const std::string& query);
/// Sets the query part of the URI.
///
/// The given query string must be properly percent-encoded.
QueryParameters getQueryParameters() const;
/// Returns the decoded query string parameters as a vector
/// of name-value pairs.
void setQueryParameters(const QueryParameters& params);
/// Sets the query part of the URI from a vector
/// of query parameters.
///
/// Calls addQueryParameter() for each parameter name and value.
const std::string& getFragment() const;
/// Returns the fragment part of the URI.
@ -246,6 +282,7 @@ public:
/// URI-decodes the given string by replacing percent-encoded
/// characters with the actual character. The decoded string
/// is appended to decodedStr.
///
/// When plusAsSpace is true, non-encoded plus signs in the query are decoded as spaces.
/// (http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1)

View File

@ -35,6 +35,9 @@ struct Foundation_API UTF8
///
/// toUpper(), toUpperInPlace(), toLower() and toLowerInPlace() provide
/// Unicode-based character case transformation for UTF-8 encoded strings.
///
/// removeBOM() removes the UTF-8 Byte Order Mark sequence (0xEF, 0xBB, 0xBF)
/// from the beginning of the given string, if it's there.
{
static int icompare(const std::string& str, std::string::size_type pos, std::string::size_type n, std::string::const_iterator it2, std::string::const_iterator end2);
static int icompare(const std::string& str1, const std::string& str2);
@ -51,6 +54,10 @@ struct Foundation_API UTF8
static std::string& toUpperInPlace(std::string& str);
static std::string toLower(const std::string& str);
static std::string& toLowerInPlace(std::string& str);
static void removeBOM(std::string& str);
/// Remove the UTF-8 Byte Order Mark sequence (0xEF, 0xBB, 0xBF)
/// from the beginning of the string, if it's there.
};

View File

@ -34,7 +34,7 @@
// Ax are alpha releases
// Bx are beta releases
//
#define POCO_VERSION 0x01050400
#define POCO_VERSION 0x010600D1
#endif // Foundation_Version_INCLUDED

View File

@ -23,10 +23,18 @@
namespace Poco {
void Bugcheck::assertion(const char* cond, const char* file, int line)
void Bugcheck::assertion(const char* cond, const char* file, int line, const char* text)
{
Debugger::enter(std::string("Assertion violation: ") + cond, file, line);
throw AssertionViolationException(what(cond, file, line));
std::string message("Assertion violation: ");
message += cond;
if (text)
{
message += " (";
message += text;
message += ")";
}
Debugger::enter(message, file, line);
throw AssertionViolationException(what(cond, file, line, text));
}
@ -100,10 +108,11 @@ void Bugcheck::debugger(const char* msg, const char* file, int line)
}
std::string Bugcheck::what(const char* msg, const char* file, int line)
std::string Bugcheck::what(const char* msg, const char* file, int line, const char* text)
{
std::ostringstream str;
if (msg) str << msg << " ";
if (text != NULL) str << "(" << text << ") ";
str << "in file \"" << file << "\", line " << line;
return str.str();
}

View File

@ -28,11 +28,18 @@
#include "Poco/UnWindows.h"
#endif
#include <algorithm>
#undef min
#undef max
#include <limits>
namespace Poco {
const Clock::ClockVal Clock::CLOCKVAL_MIN = std::numeric_limits<Clock::ClockVal>::min();
const Clock::ClockVal Clock::CLOCKVAL_MAX = std::numeric_limits<Clock::ClockVal>::max();
Clock::Clock()
{
update();

View File

@ -392,7 +392,38 @@ void DateTime::computeGregorian(double julianDay)
void DateTime::computeDaytime()
{
Timespan span(_utcTime/10);
_hour = span.hours();
int hour = span.hours();
// Due to double rounding issues, the previous call to computeGregorian()
// may have crossed into the next or previous day. We need to correct that.
if (hour == 23 && _hour == 0)
{
_day--;
if (_day == 0)
{
_month--;
if (_month == 0)
{
_month = 12;
_year--;
}
_day = daysOfMonth(_year, _month);
}
}
else if (hour == 0 && _hour == 23)
{
_day++;
if (_day > daysOfMonth(_year, _month))
{
_month++;
if (_month > 12)
{
_month = 1;
_year++;
}
_day = 1;
}
}
_hour = hour;
_minute = span.minutes();
_second = span.seconds();
_millisecond = span.milliseconds();

View File

@ -19,12 +19,18 @@
#include "Poco/Error.h"
#include <string>
#include <string.h>
#include <errno.h>
namespace Poco {
#ifdef POCO_OS_FAMILY_WINDOWS
DWORD Error::last()
{
return GetLastError();
}
std::string Error::getMessage(DWORD errorCode)
{
@ -44,6 +50,11 @@ namespace Poco {
}
#else
int Error::last()
{
return errno;
}
std::string Error::getMessage(int errorCode)
{

View File

@ -228,7 +228,7 @@ void FileImpl::setLastModifiedImpl(const Timestamp& ts)
FILETIME ft;
ft.dwLowDateTime = low;
ft.dwHighDateTime = high;
FileHandle fh(_path, FILE_ALL_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE, OPEN_EXISTING);
FileHandle fh(_path, FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE, OPEN_EXISTING);
if (SetFileTime(fh.get(), 0, &ft, &ft) == 0)
handleLastErrorImpl(_path);
}

View File

@ -232,7 +232,7 @@ void FileImpl::setLastModifiedImpl(const Timestamp& ts)
FILETIME ft;
ft.dwLowDateTime = low;
ft.dwHighDateTime = high;
FileHandle fh(_path, _upath, FILE_ALL_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE, OPEN_EXISTING);
FileHandle fh(_path, _upath, FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE, OPEN_EXISTING);
if (SetFileTime(fh.get(), 0, &ft, &ft) == 0)
handleLastErrorImpl(_path);
}

View File

@ -275,6 +275,38 @@ std::string format(const std::string& fmt, const Any& value1, const Any& value2,
}
std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
std::string result;
format(result, fmt, value1, value2, value3, value4, value5, value6, value7);
return result;
}
std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
std::string result;
format(result, fmt, value1, value2, value3, value4, value5, value6, value7, value8);
return result;
}
std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
std::string result;
format(result, fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9);
return result;
}
std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
std::string result;
format(result, fmt, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10);
return result;
}
void format(std::string& result, const std::string& fmt, const Any& value)
{
std::vector<Any> args;
@ -338,6 +370,68 @@ void format(std::string& result, const std::string& fmt, const Any& value1, cons
}
void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7)
{
std::vector<Any> args;
args.push_back(value1);
args.push_back(value2);
args.push_back(value3);
args.push_back(value4);
args.push_back(value5);
args.push_back(value6);
args.push_back(value7);
format(result, fmt, args);
}
void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8)
{
std::vector<Any> args;
args.push_back(value1);
args.push_back(value2);
args.push_back(value3);
args.push_back(value4);
args.push_back(value5);
args.push_back(value6);
args.push_back(value7);
args.push_back(value8);
format(result, fmt, args);
}
void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9)
{
std::vector<Any> args;
args.push_back(value1);
args.push_back(value2);
args.push_back(value3);
args.push_back(value4);
args.push_back(value5);
args.push_back(value6);
args.push_back(value7);
args.push_back(value8);
args.push_back(value9);
format(result, fmt, args);
}
void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6, const Any& value7, const Any& value8, const Any& value9, const Any& value10)
{
std::vector<Any> args;
args.push_back(value1);
args.push_back(value2);
args.push_back(value3);
args.push_back(value4);
args.push_back(value5);
args.push_back(value6);
args.push_back(value7);
args.push_back(value8);
args.push_back(value9);
args.push_back(value10);
format(result, fmt, args);
}
void format(std::string& result, const std::string& fmt, const std::vector<Any>& values)
{
std::string::const_iterator itFmt = fmt.begin();

View File

@ -93,12 +93,11 @@ void insertThousandSep(std::string& str, char thSep, char decSep = '.')
std::string::size_type decPos = str.find(decSep);
// there's no rinsert, using forward iterator to go backwards
std::string::iterator it = str.end();
std::string::iterator begin = str.begin();
if (exPos != std::string::npos) it -= str.size() - exPos;
if (decPos != std::string::npos)
{
while (it != begin)
while (it != str.begin())
{
--it;
if (*it == decSep) break;
@ -106,7 +105,7 @@ void insertThousandSep(std::string& str, char thSep, char decSep = '.')
}
int thCount = 0;
if (it == str.end()) --it;
for (; it != begin;)
for (; it != str.begin();)
{
std::string::iterator pos = it;
std::string::value_type chr = *it;

View File

@ -34,18 +34,16 @@ const std::string PatternFormatter::PROP_TIMES = "times";
PatternFormatter::PatternFormatter():
_localTime(false),
_localTimeOffset(Timestamp::resolution()*(Timezone::utcOffset() + Timezone::dst()))
_localTime(false)
{
}
PatternFormatter::PatternFormatter(const std::string& format):
_localTime(false),
_localTimeOffset(Timestamp::resolution()*(Timezone::utcOffset() + Timezone::dst())),
_pattern(format)
{
ParsePattern();
parsePattern();
}
@ -60,7 +58,8 @@ void PatternFormatter::format(const Message& msg, std::string& text)
bool localTime = _localTime;
if (localTime)
{
timestamp += _localTimeOffset;
timestamp += Timezone::utcOffset()*Timestamp::resolution();
timestamp += Timezone::dst()*Timestamp::resolution();
}
DateTime dateTime = timestamp;
for (std::vector<PatternAction>::iterator ip = _patternActions.begin(); ip != _patternActions.end(); ++ip)
@ -124,7 +123,8 @@ void PatternFormatter::format(const Message& msg, std::string& text)
if (!localTime)
{
localTime = true;
timestamp += _localTimeOffset;
timestamp += Timezone::utcOffset()*Timestamp::resolution();
timestamp += Timezone::dst()*Timestamp::resolution();
dateTime = timestamp;
}
break;
@ -132,7 +132,8 @@ void PatternFormatter::format(const Message& msg, std::string& text)
}
}
void PatternFormatter::ParsePattern()
void PatternFormatter::parsePattern()
{
_patternActions.clear();
std::string::const_iterator it = _pattern.begin();
@ -196,7 +197,7 @@ void PatternFormatter::setProperty(const std::string& name, const std::string& v
if (name == PROP_PATTERN)
{
_pattern = value;
ParsePattern();
parsePattern();
}
else if (name == PROP_TIMES)
{

View File

@ -20,6 +20,7 @@
#include "Poco/Pipe.h"
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/resource.h>
@ -149,6 +150,20 @@ ProcessHandleImpl* ProcessImpl::launchImpl(const std::string& command, const Arg
ProcessHandleImpl* ProcessImpl::launchByForkExecImpl(const std::string& command, const ArgsImpl& args, const std::string& initialDirectory, Pipe* inPipe, Pipe* outPipe, Pipe* errPipe, const EnvImpl& env)
{
// We must not allocated memory after fork(),
// therefore allocate all required buffers first.
std::vector<char> envChars = getEnvironmentVariablesBuffer(env);
std::vector<char*> argv(args.size() + 2);
int i = 0;
argv[i++] = const_cast<char*>(command.c_str());
for (ArgsImpl::const_iterator it = args.begin(); it != args.end(); ++it)
{
argv[i++] = const_cast<char*>(it->c_str());
}
argv[i] = NULL;
const char* pInitialDirectory = initialDirectory.empty() ? 0 : initialDirectory.c_str();
int pid = fork();
if (pid < 0)
{
@ -156,15 +171,22 @@ ProcessHandleImpl* ProcessImpl::launchByForkExecImpl(const std::string& command,
}
else if (pid == 0)
{
if (!initialDirectory.empty())
if (pInitialDirectory)
{
if (chdir(initialDirectory.c_str()) != 0)
if (chdir(pInitialDirectory) != 0)
{
_exit(72);
}
}
setEnvironmentVariables(env);
// set environment variables
char* p = &envChars[0];
while (*p)
{
putenv(p);
while (*p) ++p;
++p;
}
// setup redirection
if (inPipe)
@ -179,15 +201,11 @@ ProcessHandleImpl* ProcessImpl::launchByForkExecImpl(const std::string& command,
if (errPipe) errPipe->close(Pipe::CLOSE_BOTH);
// close all open file descriptors other than stdin, stdout, stderr
for (int i = 3; i < getdtablesize(); ++i)
{
close(i);
}
char** argv = new char*[args.size() + 2];
int i = 0;
argv[i++] = const_cast<char*>(command.c_str());
for (ArgsImpl::const_iterator it = args.begin(); it != args.end(); ++it)
argv[i++] = const_cast<char*>(it->c_str());
argv[i] = NULL;
execvp(command.c_str(), argv);
execvp(argv[0], &argv[0]);
_exit(72);
}

View File

@ -38,6 +38,57 @@
namespace Poco {
namespace {
class RunnableHolder: public Runnable
{
public:
RunnableHolder(Runnable& target):
_target(target)
{
}
~RunnableHolder()
{
}
void run()
{
_target.run();
}
private:
Runnable& _target;
};
class CallableHolder: public Runnable
{
public:
CallableHolder(Thread::Callable callable, void* pData):
_callable(callable),
_pData(pData)
{
}
~CallableHolder()
{
}
void run()
{
_callable(_pData);
}
private:
Thread::Callable _callable;
void* _pData;
};
} // namespace
Thread::Thread():
_id(uniqueId()),
_name(makeName()),
@ -76,13 +127,13 @@ Thread::Priority Thread::getPriority() const
void Thread::start(Runnable& target)
{
startImpl(target);
startImpl(new RunnableHolder(target));
}
void Thread::start(Callable target, void* pData)
{
startImpl(target, pData);
startImpl(new CallableHolder(target, pData));
}

View File

@ -104,7 +104,10 @@ void ThreadImpl::setPriorityImpl(int prio)
_pData->policy = SCHED_OTHER;
if (isRunningImpl())
{
struct sched_param par;
struct sched_param par; struct MyStruct
{
};
par.sched_priority = mapPrio(_pData->prio, SCHED_OTHER);
if (pthread_setschedparam(_pData->thread, SCHED_OTHER, &par))
throw SystemException("cannot set thread priority");
@ -117,7 +120,7 @@ void ThreadImpl::setOSPriorityImpl(int prio, int policy)
{
if (prio != _pData->osPrio || policy != _pData->policy)
{
if (_pData->pRunnableTarget || _pData->pCallbackTarget)
if (_pData->pRunnableTarget)
{
struct sched_param par;
par.sched_priority = prio;
@ -177,7 +180,7 @@ void ThreadImpl::setStackSizeImpl(int size)
}
void ThreadImpl::startImpl(Runnable& target)
void ThreadImpl::startImpl(SharedPtr<Runnable> pTarget)
{
if (_pData->pRunnableTarget)
throw SystemException("thread already running");
@ -194,7 +197,7 @@ void ThreadImpl::startImpl(Runnable& target)
}
}
_pData->pRunnableTarget = &target;
_pData->pRunnableTarget = pTarget;
if (pthread_create(&_pData->thread, &attributes, runnableEntry, this))
{
_pData->pRunnableTarget = 0;
@ -224,56 +227,6 @@ void ThreadImpl::startImpl(Runnable& target)
}
void ThreadImpl::startImpl(Callable target, void* pData)
{
if (_pData->pCallbackTarget && _pData->pCallbackTarget->callback)
throw SystemException("thread already running");
pthread_attr_t attributes;
pthread_attr_init(&attributes);
if (_pData->stackSize != 0)
{
if (0 != pthread_attr_setstacksize(&attributes, _pData->stackSize))
throw SystemException("can not set thread stack size");
}
if (0 == _pData->pCallbackTarget.get())
_pData->pCallbackTarget = new CallbackData;
_pData->pCallbackTarget->callback = target;
_pData->pCallbackTarget->pData = pData;
if (pthread_create(&_pData->thread, &attributes, callableEntry, this))
{
_pData->pCallbackTarget->callback = 0;
_pData->pCallbackTarget->pData = 0;
pthread_attr_destroy(&attributes);
throw SystemException("cannot start thread");
}
_pData->started = true;
pthread_attr_destroy(&attributes);
if (_pData->policy == SCHED_OTHER)
{
if (_pData->prio != PRIO_NORMAL_IMPL)
{
struct sched_param par;
par.sched_priority = mapPrio(_pData->prio, SCHED_OTHER);
if (pthread_setschedparam(_pData->thread, SCHED_OTHER, &par))
throw SystemException("cannot set thread priority");
}
}
else
{
struct sched_param par;
par.sched_priority = _pData->osPrio;
if (pthread_setschedparam(_pData->thread, _pData->policy, &par))
throw SystemException("cannot set thread priority");
}
}
void ThreadImpl::joinImpl()
{
if (!_pData->started) return;
@ -409,48 +362,6 @@ void* ThreadImpl::runnableEntry(void* pThread)
}
void* ThreadImpl::callableEntry(void* pThread)
{
_currentThreadHolder.set(reinterpret_cast<ThreadImpl*>(pThread));
#if defined(POCO_OS_FAMILY_UNIX)
sigset_t sset;
sigemptyset(&sset);
sigaddset(&sset, SIGQUIT);
sigaddset(&sset, SIGTERM);
sigaddset(&sset, SIGPIPE);
pthread_sigmask(SIG_BLOCK, &sset, 0);
#endif
ThreadImpl* pThreadImpl = reinterpret_cast<ThreadImpl*>(pThread);
#if defined(POCO_POSIX_DEBUGGER_THREAD_NAMES)
setThreadName(pThreadImpl->_pData->thread, reinterpret_cast<Thread*>(pThread)->getName().c_str());
#endif
AutoPtr<ThreadData> pData = pThreadImpl->_pData;
try
{
pData->pCallbackTarget->callback(pData->pCallbackTarget->pData);
}
catch (Exception& exc)
{
ErrorHandler::handle(exc);
}
catch (std::exception& exc)
{
ErrorHandler::handle(exc);
}
catch (...)
{
ErrorHandler::handle();
}
pData->pCallbackTarget->callback = 0;
pData->pCallbackTarget->pData = 0;
pData->done.set();
return 0;
}
int ThreadImpl::mapPrio(int prio, int policy)
{
int pmin = getMinOSPriorityImpl(policy);

View File

@ -70,7 +70,6 @@ ThreadImpl::CurrentThreadHolder ThreadImpl::_currentThreadHolder;
ThreadImpl::ThreadImpl():
_pRunnableTarget(0),
_thread(0),
_threadId(0),
_prio(PRIO_NORMAL_IMPL),
@ -105,30 +104,16 @@ void ThreadImpl::setOSPriorityImpl(int prio, int /* policy */)
}
void ThreadImpl::startImpl(Runnable& target)
void ThreadImpl::startImpl(SharedPtr<Runnable> pTarget)
{
if (isRunningImpl())
throw SystemException("thread already running");
_pRunnableTarget = &target;
_pRunnableTarget = pTarget;
createImpl(runnableEntry, this);
}
void ThreadImpl::startImpl(Callable target, void* pData)
{
if (isRunningImpl())
throw SystemException("thread already running");
threadCleanup();
_callbackTarget.callback = target;
_callbackTarget.pData = pData;
createImpl(callableEntry, this);
}
void ThreadImpl::createImpl(Entry ent, void* pData)
{
#if defined(_DLL)
@ -237,35 +222,4 @@ unsigned __stdcall ThreadImpl::runnableEntry(void* pThread)
}
#if defined(_DLL)
DWORD WINAPI ThreadImpl::callableEntry(LPVOID pThread)
#else
unsigned __stdcall ThreadImpl::callableEntry(void* pThread)
#endif
{
_currentThreadHolder.set(reinterpret_cast<ThreadImpl*>(pThread));
#if defined(POCO_WIN32_DEBUGGER_THREAD_NAMES)
setThreadName(-1, reinterpret_cast<Thread*>(pThread)->getName().c_str());
#endif
try
{
ThreadImpl* pTI = reinterpret_cast<ThreadImpl*>(pThread);
pTI->_callbackTarget.callback(pTI->_callbackTarget.pData);
}
catch (Exception& exc)
{
ErrorHandler::handle(exc);
}
catch (std::exception& exc)
{
ErrorHandler::handle(exc);
}
catch (...)
{
ErrorHandler::handle();
}
return 0;
}
} // namespace Poco

View File

@ -18,6 +18,9 @@
#include "Poco/Timespan.h"
#include "Poco/Exception.h"
#include <algorithm>
#undef min
#undef max
#include <limits>
#if defined(POCO_OS_FAMILY_UNIX)
#include <time.h>
#include <unistd.h>
@ -141,6 +144,10 @@ void GetSystemTimeAsFileTimeWithMillisecondResolution(FILETIME* pFT)
namespace Poco {
const Timestamp::TimeVal Timestamp::TIMEVAL_MIN = std::numeric_limits<Timestamp::TimeVal>::min();
const Timestamp::TimeVal Timestamp::TIMEVAL_MAX = std::numeric_limits<Timestamp::TimeVal>::max();
Timestamp::Timestamp()
{
update();

View File

@ -26,7 +26,7 @@ namespace Poco {
const std::string URI::RESERVED_PATH = "?#";
const std::string URI::RESERVED_QUERY = "#/";
const std::string URI::RESERVED_QUERY = "?#/";
const std::string URI::RESERVED_FRAGMENT = "";
const std::string URI::ILLEGAL = "%<>{}|\\\"^`";
@ -335,9 +335,9 @@ void URI::addQueryParameter(const std::string& param, const std::string& val)
{
std::string reserved(RESERVED_QUERY);
reserved += "=&";
if (!_query.empty()) _query.append(1, '&');
if (!_query.empty()) _query += '&';
encode(param, reserved, _query);
_query.append(1, '=');
_query += '=';
encode(val, reserved, _query);
}
@ -350,6 +350,56 @@ std::string URI::getQuery() const
}
URI::QueryParameters URI::getQueryParameters() const
{
QueryParameters result;
std::string::const_iterator it(_query.begin());
std::string::const_iterator end(_query.end());
while (it != end)
{
std::string name;
std::string value;
while (it != end && *it != '=' && *it != '&')
{
if (*it == '+')
name += ' ';
else
name += *it;
++it;
}
if (it != end && *it == '=')
{
++it;
while (it != end && *it != '&')
{
if (*it == '+')
value += ' ';
else
value += *it;
++it;
}
}
std::string decodedName;
std::string decodedValue;
URI::decode(name, decodedName);
URI::decode(value, decodedValue);
result.push_back(std::make_pair(decodedName, decodedValue));
if (it != end && *it == '&') ++it;
}
return result;
}
void URI::setQueryParameters(const QueryParameters& params)
{
_query.clear();
for (QueryParameters::const_iterator it = params.begin(); it != params.end(); ++it)
{
addQueryParameter(it->first, it->second);
}
}
void URI::setFragment(const std::string& fragment)
{
_fragment.clear();

View File

@ -160,4 +160,16 @@ std::string& UTF8::toLowerInPlace(std::string& str)
}
void UTF8::removeBOM(std::string& str)
{
if (str.size() >= 3
&& static_cast<unsigned char>(str[0]) == 0xEF
&& static_cast<unsigned char>(str[1]) == 0xBB
&& static_cast<unsigned char>(str[2]) == 0xBF)
{
str.erase(0, 3);
}
}
} // namespace Poco

View File

@ -401,6 +401,8 @@ Var Var::parse(const std::string& val, std::string::size_type& pos)
return parseObject(val, pos);
case '[':
return parseArray(val, pos);
case '"':
return parseJSONString(val, pos);
default:
return parseString(val, pos);
}
@ -464,41 +466,79 @@ Var Var::parseArray(const std::string& val, std::string::size_type& pos)
std::string Var::parseString(const std::string& val, std::string::size_type& pos)
{
static const std::string STR_STOP("\"");
static const std::string OTHER_STOP("\n ,]}");
bool inString = false;
//skip optional ' "
if (val[pos] == '"')
{
inString = true;
++pos;
}
std::string::size_type stop = std::string::npos;
if (inString)
{
stop = val.find_first_of(STR_STOP, pos);
if (stop == std::string::npos)
throw DataFormatException("Unterminated string");
return parseJSONString(val, pos);
}
else
{
// we stop at space, ',', ']' or '}' or end of string
stop = val.find_first_of(OTHER_STOP, pos);
if (stop == std::string::npos)
stop = val.size();
std::string::size_type safeCheck = val.find_first_of(STR_STOP, pos);
if (safeCheck != std::string::npos && safeCheck < stop)
throw DataFormatException("Misplaced string termination char found");
std::string result;
while (pos < val.size()
&& !Poco::Ascii::isSpace(val[pos])
&& val[pos] != ','
&& val[pos] != ']'
&& val[pos] != '}')
{
result += val[pos++];
}
return result;
}
}
// stop now points to the last char to be not included
std::string result = val.substr(pos, stop - pos);
++stop; // point past '/"
pos = stop;
std::string Var::parseJSONString(const std::string& val, std::string::size_type& pos)
{
poco_assert_dbg (val[pos] == '"');
++pos;
std::string result;
bool done = false;
while (pos < val.size() && !done)
{
switch (val[pos])
{
case '"':
done = true;
++pos;
break;
case '\\':
if (pos < val.size())
{
++pos;
switch (val[pos])
{
case 'b':
result += '\b';
break;
case 'f':
result += '\f';
break;
case 'n':
result += '\n';
break;
case 'r':
result += '\r';
break;
case 't':
result += '\t';
break;
default:
result += val[pos];
break;
}
break;
}
else
{
result += val[pos];
}
++pos;
break;
default:
result += val[pos++];
break;
}
}
if (!done) throw Poco::DataFormatException("unterminated JSON string");
return result;
}

View File

@ -35,6 +35,43 @@ VarHolder::~VarHolder()
namespace Impl {
void escape(std::string& target, const std::string& source)
{
std::string::const_iterator it(source.begin());
std::string::const_iterator end(source.end());
for (; it != end; ++it)
{
switch (*it)
{
case '"':
target += "\\\"";
break;
case '\\':
target += "\\\\";
break;
case '\b':
target += "\\b";
break;
case '\f':
target += "\\f";
break;
case '\n':
target += "\\n";
break;
case '\r':
target += "\\r";
break;
case '\t':
target += "\\t";
break;
default:
target += *it;
break;
}
}
}
bool isJSONString(const Var& any)
{
return any.type() == typeid(std::string) ||
@ -48,9 +85,9 @@ bool isJSONString(const Var& any)
void appendJSONString(std::string& val, const Var& any)
{
val.append(1, '"');
val.append(any.convert<std::string>());
val.append(1, '"');
val += '"';
escape(val, any.convert<std::string>());
val += '"';
}
@ -62,13 +99,21 @@ void appendJSONKey(std::string& val, const Var& any)
void appendJSONValue(std::string& val, const Var& any)
{
if (any.isEmpty()) val.append("null");
if (any.isEmpty())
{
val.append("null");
}
else
{
bool isStr = isJSONString(any);
if (isStr) val.append(1, '"');
val.append(any.convert<std::string>());
if (isStr) val.append(1, '"');
if (isStr)
{
appendJSONString(val, any.convert<std::string>());
}
else
{
val.append(any.convert<std::string>());
}
}
}

View File

@ -46,10 +46,12 @@ set_target_properties( TestApp PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTI
target_link_libraries( TestApp PocoFoundation )
# TODO: Add TestApp_WINCE
if(NOT POCO_STATIC)
# TestLibrary
add_library( TestLibrary SHARED src/TestLibrary.cpp src/TestPlugin.cpp src/TestPlugin.h )
set_target_properties( TestLibrary PROPERTIES PREFIX "" DEBUG_POSTFIX "") # The test requires the library named TestLibrary. By default it is prefixed with lib.
# The test is run in the runtime directory. So the TestLibrary is built there too because it is used by the tests
set_target_properties( TestLibrary PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} )
target_link_libraries( TestLibrary PocoFoundation )
endif()

View File

@ -18,8 +18,10 @@
#include "Poco/Timespan.h"
#include "Poco/Exception.h"
GCC_DIAG_OFF(unused-variable)
using Poco::Timestamp;
using Poco::DateTime;
using Poco::Timespan;
@ -443,6 +445,28 @@ void DateTimeTest::testArithmetics()
loop_1_assert(line, data[di].month2 == X.month());
loop_1_assert(line, data[di].day2 == X.day());
}
DateTime edgeTime(2014, 9, 16, 0, 0, 0, 0, 10);
edgeTime -= Poco::Timespan(11);
assert (edgeTime.year() == 2014);
assert (edgeTime.month() == 9);
assert (edgeTime.day() == 15);
assert (edgeTime.hour() == 23);
assert (edgeTime.minute() == 59);
assert (edgeTime.second() == 59);
assert (edgeTime.millisecond() == 999);
assert (edgeTime.microsecond() == 999);
edgeTime.assign(2014, 9, 15, 23, 59, 59, 999, 968);
edgeTime += Poco::Timespan(11);
assert (edgeTime.year() == 2014);
assert (edgeTime.month() == 9);
assert (edgeTime.day() == 15);
assert (edgeTime.hour() == 23);
assert (edgeTime.minute() == 59);
assert (edgeTime.second() == 59);
assert (edgeTime.millisecond() == 999);
assert (edgeTime.microsecond() == 979);
}
void DateTimeTest::testIncrementDecrement()

View File

@ -199,6 +199,18 @@ void LoggerTest::testFormatAny()
root.error("%d%d%d%d%d%d", 1, 2, 3, 4, 5, 6);
assert (pChannel->getLastMessage().getText() == "123456");
root.error("%d%d%d%d%d%d%d", 1, 2, 3, 4, 5, 6, 7);
assert(pChannel->getLastMessage().getText() == "1234567");
root.error("%d%d%d%d%d%d%d%d", 1, 2, 3, 4, 5, 6, 7, 8);
assert(pChannel->getLastMessage().getText() == "12345678");
root.error("%d%d%d%d%d%d%d%d%d", 1, 2, 3, 4, 5, 6, 7, 8, 9);
assert(pChannel->getLastMessage().getText() == "123456789");
root.error("%d%d%d%d%d%d%d%d%d%d", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
assert(pChannel->getLastMessage().getText() == "12345678910");
}

View File

@ -363,6 +363,45 @@ void ThreadTest::testThreadFunction()
}
struct Functor
{
void operator () ()
{
++MyRunnable::_staticVar;
}
};
void ThreadTest::testThreadFunctor()
{
Thread thread;
assert (!thread.isRunning());
MyRunnable::_staticVar = 0;
thread.startFunc(Functor());
thread.join();
assert (1 == MyRunnable::_staticVar);
assert (!thread.isRunning());
#if __cplusplus >= 201103L
Thread thread2;
assert (!thread2.isRunning());
MyRunnable::_staticVar = 0;
thread.startFunc([] () {MyRunnable::_staticVar++;});
thread.join();
assert (1 == MyRunnable::_staticVar);
assert (!thread2.isRunning());
#endif
}
void ThreadTest::testThreadStackSize()
{
int stackSize = 50000000;
@ -436,6 +475,7 @@ CppUnit::Test* ThreadTest::suite()
CppUnit_addTest(pSuite, ThreadTest, testTrySleep);
CppUnit_addTest(pSuite, ThreadTest, testThreadTarget);
CppUnit_addTest(pSuite, ThreadTest, testThreadFunction);
CppUnit_addTest(pSuite, ThreadTest, testThreadFunctor);
CppUnit_addTest(pSuite, ThreadTest, testThreadStackSize);
CppUnit_addTest(pSuite, ThreadTest, testSleep);

View File

@ -37,6 +37,7 @@ public:
void testTrySleep();
void testThreadTarget();
void testThreadFunction();
void testThreadFunctor();
void testThreadStackSize();
void testSleep();

View File

@ -720,6 +720,7 @@ void URITest::testSwap()
assert (uri2.toString() == "http://www.appinf.com/search.cgi?keyword=test%20encoded&scope=all#result");
}
void URITest::testOther()
{
// The search string is "hello%world"; google happens to ignore the '%'
@ -735,6 +736,18 @@ void URITest::testOther()
assert(uri.toString() == "http://google.com/search?q=hello%25world#frag%20ment");
assert(uri.getPathEtc() == "/search?q=hello%25world#frag%20ment");
uri.setQuery("q=foo&bar");
assert(uri.getQuery() == "q=foo&bar");
assert(uri.getRawQuery() == "q=foo&bar");
assert(uri.toString() == "http://google.com/search?q=foo&bar#frag%20ment");
assert(uri.getPathEtc() == "/search?q=foo&bar#frag%20ment");
uri.setQuery("q=foo/bar");
assert(uri.getQuery() == "q=foo/bar");
assert(uri.getRawQuery() == "q=foo%2Fbar");
assert(uri.toString() == "http://google.com/search?q=foo%2Fbar#frag%20ment");
assert(uri.getPathEtc() == "/search?q=foo%2Fbar#frag%20ment");
uri.setQuery("q=goodbye cruel world");
assert(uri.getQuery() == "q=goodbye cruel world");
assert(uri.getRawQuery() == "q=goodbye%20cruel%20world");
@ -753,6 +766,15 @@ void URITest::testOther()
uri.addQueryParameter("pa=ra&m2", "val&ue");
assert(uri.getRawQuery() == "q=pony%7eride&pa%3Dra%26m1=&pa%3Dra%26m2=val%26ue");
assert(uri.getQuery() == "q=pony~ride&pa=ra&m1=&pa=ra&m2=val&ue");
uri = "http://google.com/search?q=hello+world#frag%20ment";
assert(uri.getHost() == "google.com");
assert(uri.getPath() == "/search");
assert(uri.getQuery() == "q=hello+world");
assert(uri.getRawQuery() == "q=hello+world");
assert(uri.getFragment() == "frag ment");
assert(uri.toString() == "http://google.com/search?q=hello+world#frag%20ment");
assert(uri.getPathEtc() == "/search?q=hello+world#frag%20ment");
}
@ -792,6 +814,40 @@ void URITest::testFromPath()
}
void URITest::testQueryParameters()
{
Poco::URI uri("http://google.com/search?q=hello+world&client=safari");
URI::QueryParameters params = uri.getQueryParameters();
assert (params.size() == 2);
assert (params[0].first == "q");
assert (params[0].second == "hello world");
assert (params[1].first == "client");
assert (params[1].second == "safari");
uri.setQueryParameters(params);
assert (uri.toString() == "http://google.com/search?q=hello%20world&client=safari");
uri = "http://google.com/search?q=&client&";
params = uri.getQueryParameters();
assert (params.size() == 2);
assert (params[0].first == "q");
assert (params[0].second == "");
assert (params[1].first == "client");
assert (params[1].second == "");
uri.setQueryParameters(params);
assert (uri.toString() == "http://google.com/search?q=&client=");
params[0].second = "foo/bar?";
uri.setQueryParameters(params);
assert (uri.toString() == "http://google.com/search?q=foo%2Fbar%3F&client=");
params[0].second = "foo&bar";
uri.setQueryParameters(params);
assert (uri.toString() == "http://google.com/search?q=foo%26bar&client=");
}
void URITest::setUp()
{
}
@ -816,6 +872,7 @@ CppUnit::Test* URITest::suite()
CppUnit_addTest(pSuite, URITest, testEncodeDecode);
CppUnit_addTest(pSuite, URITest, testOther);
CppUnit_addTest(pSuite, URITest, testFromPath);
CppUnit_addTest(pSuite, URITest, testQueryParameters);
return pSuite;
}

View File

@ -36,6 +36,7 @@ public:
void testEncodeDecode();
void testOther();
void testFromPath();
void testQueryParameters();
void setUp();
void tearDown();

View File

@ -2089,6 +2089,20 @@ void VarTest::testArrayToString()
}
void VarTest::testArrayToStringEscape()
{
std::string s1("\"quoted string\"");
Poco::Int8 s2(23);
std::vector<Var> s16;
s16.push_back(s1);
s16.push_back(s2);
Var a1(s16);
std::string res = a1.convert<std::string>();
std::string expected("[ \"\\\"quoted string\\\"\", 23 ]");
assert (res == expected);
}
void VarTest::testStructToString()
{
DynamicStruct aStruct;
@ -2103,6 +2117,18 @@ void VarTest::testStructToString()
}
void VarTest::testStructToStringEscape()
{
DynamicStruct aStruct;
aStruct["Value"] = "Value with \" and \n";
Var a1(aStruct);
std::string res = a1.convert<std::string>();
std::string expected = "{ \"Value\" : \"Value with \\\" and \\n\" }";
assert (res == expected);
assert (aStruct.toString() == res);
}
void VarTest::testArrayOfStructsToString()
{
std::vector<Var> s16;
@ -2592,7 +2618,9 @@ CppUnit::Test* VarTest::suite()
CppUnit_addTest(pSuite, VarTest, testDynamicStructString);
CppUnit_addTest(pSuite, VarTest, testDynamicStructInt);
CppUnit_addTest(pSuite, VarTest, testArrayToString);
CppUnit_addTest(pSuite, VarTest, testArrayToStringEscape);
CppUnit_addTest(pSuite, VarTest, testStructToString);
CppUnit_addTest(pSuite, VarTest, testStructToStringEscape);
CppUnit_addTest(pSuite, VarTest, testArrayOfStructsToString);
CppUnit_addTest(pSuite, VarTest, testStructWithArraysToString);
CppUnit_addTest(pSuite, VarTest, testJSONDeserializeString);

View File

@ -59,7 +59,9 @@ public:
void testDynamicStructString();
void testDynamicStructInt();
void testArrayToString();
void testArrayToStringEscape();
void testStructToString();
void testStructToStringEscape();
void testArrayOfStructsToString();
void testStructWithArraysToString();
void testJSONDeserializeString();

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoJSON")
set(LIBNAME "JSON")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -8,26 +9,40 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL JSON_EXPORTS)
target_link_libraries( ${LIBNAME} PocoFoundation)
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL JSON_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation)
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(samples)
add_subdirectory(testsuite)

View File

@ -0,0 +1,4 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
include("${CMAKE_CURRENT_LIST_DIR}/PocoJSONTargets.cmake")

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoMongoDB")
set(LIBNAME "MongoDB")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -8,26 +9,39 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL MongoDB_EXPORTS)
target_link_libraries( ${LIBNAME} PocoNet PocoFoundation)
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL MongoDB_EXPORTS
)
target_link_libraries( "${LIBNAME}" Net Foundation)
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(samples)
add_subdirectory(testsuite)

View File

@ -0,0 +1,5 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
find_dependency(PocoNet)
include("${CMAKE_CURRENT_LIST_DIR}/PocoMongoDBTargets.cmake")

View File

@ -1,4 +1,5 @@
set(LIBNAME "PocoNet")
set(LIBNAME "Net")
set(POCO_LIBNAME "Poco${LIBNAME}")
# Sources
file(GLOB SRCS_G "src/*.cpp")
@ -8,31 +9,48 @@ POCO_SOURCES_AUTO( SRCS ${SRCS_G})
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
#TODO: Can WIN32 be used here?
if(CMAKE_SYSTEM MATCHES "Windows")
set(SYSLIBS ${SYSLIBS} "ws2_32.lib" "iphlpapi.lib")
endif(CMAKE_SYSTEM MATCHES "Windows")
# Windows and WindowsCE need additional libraries
if(WIN32)
if(WINCE)
set(SYSLIBS ${SYSLIBS} "ws2.lib" "iphlpapi.lib")
else()
set(SYSLIBS ${SYSLIBS} "ws2_32.lib" "iphlpapi.lib")
endif()
endif(WIN32)
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME}
add_library( "${LIBNAME}" ${LIB_MODE} ${SRCS} )
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
set_target_properties( "${LIBNAME}"
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL Net_EXPORTS)
target_link_libraries( ${LIBNAME} PocoFoundation ${SYSLIBS})
OUTPUT_NAME ${POCO_LIBNAME}
DEFINE_SYMBOL Net_EXPORTS
)
target_link_libraries( "${LIBNAME}" Foundation ${SYSLIBS})
target_include_directories( "${LIBNAME}"
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
)
install(
DIRECTORY include/Poco
DESTINATION include
COMPONENT Devel
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
TARGETS "${LIBNAME}" EXPORT "${LIBNAME}Targets"
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX}
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
POCO_GENERATE_PACKAGE("${LIBNAME}" "${LIBNAME}Targets" "lib/cmake/${PROJECT_NAME}")
if (ENABLE_TESTS)
add_subdirectory(samples)
add_subdirectory(testsuite)

View File

@ -32,7 +32,8 @@ objects = \
ICMPSocket ICMPSocketImpl ICMPv4PacketImpl \
NTPClient NTPEventArgs NTPPacket \
RemoteSyslogChannel RemoteSyslogListener SMTPChannel \
WebSocket WebSocketImpl
WebSocket WebSocketImpl \
OAuth10Credentials OAuth20Credentials
target = PocoNet
target_version = $(LIBVERSION)

View File

@ -819,10 +819,12 @@
Name="Reactor">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketConnector.h"/>
<File
@ -831,8 +833,6 @@
RelativePath=".\include\Poco\Net\SocketNotifier.h"/>
<File
RelativePath=".\include\Poco\Net\SocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
</Filter>
<Filter
Name="Source Files">
@ -969,6 +969,23 @@
RelativePath=".\src\WebSocketImpl.cpp"/>
</Filter>
</Filter>
<Filter
Name="OAuth">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\OAuth10Credentials.h"/>
<File
RelativePath=".\include\Poco\Net\OAuth20Credentials.h"/>
</Filter>
<Filter
Name="Source Files">
<File
RelativePath=".\src\OAuth10Credentials.cpp"/>
<File
RelativePath=".\src\OAuth20Credentials.cpp"/>
</Filter>
</Filter>
<File
RelativePath="..\DLLVersion.rc">
<FileConfiguration

View File

@ -335,13 +335,13 @@
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
<ClInclude Include="include\Poco\Net\MailStream.h"/>
@ -362,6 +362,8 @@
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp"/>
@ -461,6 +463,8 @@
<ClCompile Include="src\SMTPChannel.cpp"/>
<ClCompile Include="src\WebSocket.cpp"/>
<ClCompile Include="src\WebSocketImpl.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{c5903a6c-8e48-4644-9f2c-d424d8e165cc}</UniqueIdentifier>
<UniqueIdentifier>{cd987b2e-01c7-43fa-8744-d9de3c93857f}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{8200782f-111b-415f-94fc-3d3b4304a80b}</UniqueIdentifier>
<UniqueIdentifier>{5b2a7574-6bec-485e-ad27-3dcd16fdf94f}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{feb34fc5-8d83-4f9a-ab52-081e99ec8960}</UniqueIdentifier>
<UniqueIdentifier>{825980e9-05c0-4a95-9bce-f8ff6c306f8d}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{d862efd8-2dd5-48a9-9c45-ff0cd439ec40}</UniqueIdentifier>
<UniqueIdentifier>{b15de1cb-66c0-4add-bb5d-57cb58bed565}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{a244fc56-e260-470e-b2a4-cab7da3c0808}</UniqueIdentifier>
<UniqueIdentifier>{27b3010f-fd83-473f-9954-5842f2faea9f}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{dd12a8f7-f4b9-4733-81ea-8f0bdb59b44d}</UniqueIdentifier>
<UniqueIdentifier>{943df401-b8cb-4330-8ce4-886e34692d43}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{8153fb51-c507-46bf-8dae-8f3ef42eb35d}</UniqueIdentifier>
<UniqueIdentifier>{18ba3f64-3fe7-4bc3-8655-304d682f035e}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{252a929e-1da1-49ae-b2d5-4713b6c03632}</UniqueIdentifier>
<UniqueIdentifier>{2b86e007-4a0b-4f8a-abc6-3ef3a01f53c2}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{77ba251d-ce7d-42c3-9b40-149fef4a837d}</UniqueIdentifier>
<UniqueIdentifier>{a0a73fa5-efd0-400c-8934-8588cd5b4597}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{f9c5703d-3cb6-401a-839a-f7ac6b83360a}</UniqueIdentifier>
<UniqueIdentifier>{9b4f898b-08b4-4d0e-997c-245ed25ffd32}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{739c28cb-20bc-423c-86fc-20eaa859cdf6}</UniqueIdentifier>
<UniqueIdentifier>{3a447457-4238-423b-a43f-b2dc922057e8}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{b63a2dfb-ae99-487a-8362-e4880b0555c5}</UniqueIdentifier>
<UniqueIdentifier>{5d8e4197-9dae-4103-a28f-ff176fad4310}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{81df8653-4e2d-4bc2-a6ec-8daedb0ab17e}</UniqueIdentifier>
<UniqueIdentifier>{2873cdb3-36b8-4485-a500-340d56958f05}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{3705a943-1838-4a44-b5b0-b9abac417b4e}</UniqueIdentifier>
<UniqueIdentifier>{1b17bd07-bee6-4e03-bf62-28329a29b4a8}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{90a9f28f-355d-4cef-84de-64437ae18375}</UniqueIdentifier>
<UniqueIdentifier>{211c4e65-5421-4ec8-8564-1dfb9352d808}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{bb9531b4-6901-4f7d-9609-8f01214d7545}</UniqueIdentifier>
<UniqueIdentifier>{8fa8027e-6c8c-4e2b-85ee-e4fda6a62c0d}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{eb561a4c-c14f-444b-bec2-99e770a501e5}</UniqueIdentifier>
<UniqueIdentifier>{5b5fe4f8-9137-4ea9-a9b1-760c7b64c1e6}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{30eb8b20-cb65-497d-8357-2e1abdf7b5ee}</UniqueIdentifier>
<UniqueIdentifier>{147d14f1-6f5e-4f8b-896c-5ad4142d92f0}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{5f77dbeb-f7b8-4d26-8a19-0d9107073151}</UniqueIdentifier>
<UniqueIdentifier>{518f793d-3213-4b88-a5a3-926d92f4d76e}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{fbe689c4-5443-48f6-ad57-afe26ee4e979}</UniqueIdentifier>
<UniqueIdentifier>{a75d596e-f78a-4001-b0e2-9a3df90a7485}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{eaf9cbbe-8ebd-45eb-af83-af4c12e26b36}</UniqueIdentifier>
<UniqueIdentifier>{4bdc2ab8-5afe-4a54-b083-6d0904b103e9}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{e9cdd43a-dd7d-4682-967d-3c89bd7118b5}</UniqueIdentifier>
<UniqueIdentifier>{041a7d67-6f17-4859-b292-d82effcc25e4}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{a42a1546-112b-42f4-9401-8b21ad52a5e8}</UniqueIdentifier>
<UniqueIdentifier>{3c29b9fa-93fd-4f97-8e10-a3a417c3c907}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{b22b2350-f3a2-4c3c-9085-1f66161a80e0}</UniqueIdentifier>
<UniqueIdentifier>{9ce0e2a7-e5e9-4b58-81b9-edaa19befd08}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{706db337-7dad-4e3a-890d-620f862d7471}</UniqueIdentifier>
<UniqueIdentifier>{136bfe67-2cd8-489e-a92a-2387f49ececa}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{a31923e9-825e-4c5b-8455-5a3c4c960b70}</UniqueIdentifier>
<UniqueIdentifier>{1440669f-dd9b-4157-83de-d1f3f8d4fcaa}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{63a06007-e121-4ea5-9b40-9126d59a760a}</UniqueIdentifier>
<UniqueIdentifier>{c6cb991d-2f5d-44af-be01-61a7c113f68a}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{15d62f8e-e448-499b-8584-2ae19cbe2c39}</UniqueIdentifier>
<UniqueIdentifier>{fdf1e06a-25de-43c3-962a-77e405cd0798}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{383b014d-dbbe-482e-b278-f56a1eb46c1f}</UniqueIdentifier>
<UniqueIdentifier>{54ca0dbd-ac2e-4947-8c53-14504808d98f}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{d10bfa1b-d858-496a-a1dd-059aca60a960}</UniqueIdentifier>
<UniqueIdentifier>{c5a05a94-73ed-4501-9fea-2da0e1ca0ef5}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{915639e2-b424-41f0-8853-b15861068a9b}</UniqueIdentifier>
<UniqueIdentifier>{e98abe3f-311c-4ec7-a451-f854c78f4cd8}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{840ae175-7d75-4bdc-9760-2c8b136f899e}</UniqueIdentifier>
<UniqueIdentifier>{1398eddd-8d1e-415d-91f4-7645111e166c}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{954b0030-4236-4a1a-ad62-a535c8a8974f}</UniqueIdentifier>
<UniqueIdentifier>{673be950-eb56-448b-b446-a834e60bd9bc}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{4a07c293-5039-4180-98c3-3b95ce34e410}</UniqueIdentifier>
<UniqueIdentifier>{a554392b-0a40-442b-abdb-bed6a75f61d7}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{2b29289f-c77b-41f0-a8bd-955a3cf2a5e4}</UniqueIdentifier>
<UniqueIdentifier>{70ede3d9-2737-4af7-8a19-b73f8b5ca13a}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{efe0118e-f8ea-4e7f-8f93-d5176eb34fe0}</UniqueIdentifier>
<UniqueIdentifier>{cd3146fb-c327-4bdc-a609-f6e35e2d985c}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{bde6d18e-3aec-44b8-a7ef-e08ba7bac1e8}</UniqueIdentifier>
<UniqueIdentifier>{8ba593ed-955c-4247-8b9d-42320ef070a7}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{091ff77c-d66c-42b8-a013-40952350e53c}</UniqueIdentifier>
<UniqueIdentifier>{6830107a-14b1-4ce3-b0d5-dc02d59fcb33}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{23c79763-9906-4d0e-8898-e1cf2e694f69}</UniqueIdentifier>
<UniqueIdentifier>{4a48fefa-5501-4cfa-ac26-d0e3eceb407f}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{796e3d54-f706-4cfd-8485-9c1e5aa182c7}</UniqueIdentifier>
<UniqueIdentifier>{24e5bae1-09f6-4607-804f-4a7ed9a53f6d}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{a570f081-73e3-4cd5-9ec3-c929b90f31ce}</UniqueIdentifier>
<UniqueIdentifier>{d00119ab-ebea-45b7-8b2c-8a44cc61dde9}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{e1afe942-3011-4416-b045-7098c4f09126}</UniqueIdentifier>
<UniqueIdentifier>{9a5d5c26-e1da-4c31-ade8-ba60e6d7a1a1}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{3b5725f7-7429-4668-986c-bfd1cfd55156}</UniqueIdentifier>
<UniqueIdentifier>{a8e1b860-a078-42a8-a66e-e732c93de8c3}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{e62071a7-a945-44f9-bc78-518e97639f0e}</UniqueIdentifier>
<UniqueIdentifier>{aade08d9-3b9a-45b5-976a-d8b3cbfc9ada}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{bf26761c-3072-4c06-9b6c-10133ffa34cb}</UniqueIdentifier>
<UniqueIdentifier>{57904ed1-f383-44ae-8e96-47c034a67c3c}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{be877161-009f-4cd3-9cf3-5f382de51152}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{ae504077-de48-41c7-a821-cb1efaed05de}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{60bb69a9-bdd2-490c-8450-8bb777e665a6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -325,6 +325,8 @@
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
@ -429,6 +431,8 @@
<ClCompile Include="src\NTPEventArgs.cpp"/>
<ClCompile Include="src\NTPPacket.cpp"/>
<ClCompile Include="src\NullPartHandler.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
<ClCompile Include="src\PartHandler.cpp"/>
<ClCompile Include="src\PartSource.cpp"/>
<ClCompile Include="src\PartStore.cpp"/>

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{1bd8f372-4a06-4215-b913-d7b3c22b886e}</UniqueIdentifier>
<UniqueIdentifier>{d773e47d-ad7c-4e3e-aaea-2bc7425f59e6}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{10c5b3f9-e0da-4e57-81b3-8f65c56ad594}</UniqueIdentifier>
<UniqueIdentifier>{efa75fa1-02c1-4b8c-b398-808a3043329b}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{7486bc28-20a7-48a6-8de0-cfc881229e82}</UniqueIdentifier>
<UniqueIdentifier>{6f5a2fe8-4246-4b63-aaad-7bb4d1ec1829}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{0489e47a-4820-4a1f-9c39-71ee4f7cd308}</UniqueIdentifier>
<UniqueIdentifier>{6da1e452-09c0-442c-973c-18f86b7597af}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{745ae453-9273-4eb0-8c76-ef84a122308f}</UniqueIdentifier>
<UniqueIdentifier>{422b8206-bd5c-4fb7-8022-7f5b90a4a022}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{f7843494-4608-4d75-86c1-9d436e26df29}</UniqueIdentifier>
<UniqueIdentifier>{000b601f-76a6-4612-b669-c10e044b8f5f}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{83119330-c2fe-4051-b894-206c0dbd1609}</UniqueIdentifier>
<UniqueIdentifier>{ac01ac79-711b-4025-9447-ef5a7379c28c}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{418ef227-6d88-4bb1-bca5-84446baa8118}</UniqueIdentifier>
<UniqueIdentifier>{6cfa10b5-c70a-47ff-850f-b833c7687007}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{bcd55f4a-3efb-41e8-b614-fa7d2240f1a2}</UniqueIdentifier>
<UniqueIdentifier>{c63851c1-2f3e-4ed7-a61f-e09d5f8085f4}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{4e6d5b73-57a0-4306-9b99-cc5c4e6096db}</UniqueIdentifier>
<UniqueIdentifier>{22c287fc-b927-48bc-bba2-fe01cbc975f3}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{1320ffd7-f156-48ce-b720-f60c7f46d726}</UniqueIdentifier>
<UniqueIdentifier>{6551bf58-8858-4460-8e17-7c1ec190a43b}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{0100127a-2734-4485-983d-2301e64bd562}</UniqueIdentifier>
<UniqueIdentifier>{a3c0ac5c-05fc-465b-aba7-ce2731c6ceec}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{cef17310-bcee-4d27-9d5a-4b1b067aac43}</UniqueIdentifier>
<UniqueIdentifier>{21ff19f3-28a9-4fee-8d5c-d6cbdcdeb9af}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{ead9324b-e69f-47c0-a7cd-836dcbe5f127}</UniqueIdentifier>
<UniqueIdentifier>{037bba1e-9c73-4b39-b505-43628c5fdb04}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{820160f8-6e19-491e-a55b-bd5d9ff71c60}</UniqueIdentifier>
<UniqueIdentifier>{53bc79cb-24b9-435e-b51b-fa4989864b0a}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{0f530a09-6c04-4b46-8015-d016b5e98fe0}</UniqueIdentifier>
<UniqueIdentifier>{c342ef19-e362-446b-b128-dee22e07d489}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{bded0c21-897b-42ba-8575-2d567933eccb}</UniqueIdentifier>
<UniqueIdentifier>{c3ebbba2-3a98-4e1e-9cab-52db7ff0c395}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{2ebcc81f-0b0e-4388-939c-6abcc707bc0d}</UniqueIdentifier>
<UniqueIdentifier>{e0419e19-23cf-4482-acdb-9a7bafade67d}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{1dbbacde-8628-4a0f-a838-59d873d9133a}</UniqueIdentifier>
<UniqueIdentifier>{a388af05-9249-4183-9d3b-a2d7d0599054}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{27c236f4-edb0-4024-82eb-327a52d7670b}</UniqueIdentifier>
<UniqueIdentifier>{30d793c9-beed-485a-bef5-c00f62ef06d2}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{e11a6b88-fb75-4483-8080-299a5c66deed}</UniqueIdentifier>
<UniqueIdentifier>{c527296e-f8cd-499f-ba38-13c9e8a18c77}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{87810ce2-7362-4686-a125-3607f2c75f0e}</UniqueIdentifier>
<UniqueIdentifier>{50a91170-731f-41f4-badb-b4a6a42d8a43}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{84b99672-ee76-4e02-b925-290659e38fdb}</UniqueIdentifier>
<UniqueIdentifier>{096e16f3-9b9e-42fa-9e88-f4eed49090e9}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{81c35217-67c7-48c4-a5fa-42c8bf4de16b}</UniqueIdentifier>
<UniqueIdentifier>{73d1451a-8af5-45f8-82b1-4b2b9f07fdcb}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{61e05400-d7ba-4f4c-aac7-59efa7acd541}</UniqueIdentifier>
<UniqueIdentifier>{d95bbc6e-ad06-40c8-a708-6f65207943cc}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{3e0d064b-141c-424c-a167-10641ce48860}</UniqueIdentifier>
<UniqueIdentifier>{02cc7095-77a8-4022-920b-67d705fb46f0}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{10be7076-2962-405e-ad29-412633063655}</UniqueIdentifier>
<UniqueIdentifier>{3bff4846-9cd4-413d-801a-e2a7acdbeec3}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{5c405085-17e4-4cf0-b7df-9d46c5a29954}</UniqueIdentifier>
<UniqueIdentifier>{1b14132c-51f7-455f-8bb7-141d75c14588}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{85942ad9-a45c-4a23-a54a-b0603ed5c40b}</UniqueIdentifier>
<UniqueIdentifier>{5fef30ac-0aca-4bf3-babb-f691134092a3}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{ca98bbc6-24f3-4c02-99c5-f008c5662b2f}</UniqueIdentifier>
<UniqueIdentifier>{7085357c-73fc-4970-b470-6366f97f1f9c}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{4e2cf42e-bca1-4216-b718-e6e9211487e6}</UniqueIdentifier>
<UniqueIdentifier>{f57d1e54-e56a-43e3-9807-1fd50a74a541}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{f1446fea-99da-4760-ac5d-4ae62f3e42dc}</UniqueIdentifier>
<UniqueIdentifier>{ef39724b-b805-4470-8194-3eb0e43dacfa}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{2b430714-9761-4d20-9e70-45569377a10d}</UniqueIdentifier>
<UniqueIdentifier>{38091277-72a9-4480-a418-fe579e713814}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{df7dca54-0c19-45ce-89c8-12ba9afd7e5c}</UniqueIdentifier>
<UniqueIdentifier>{a6a7dbec-c686-4d31-b2d0-d84c8c66c108}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{72100236-f75d-4bb0-bbe5-2de2269d0819}</UniqueIdentifier>
<UniqueIdentifier>{477c05ac-0c2e-4cef-9906-e515b4f1e026}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{eaf72227-78ac-4435-88e6-d59722ae71b1}</UniqueIdentifier>
<UniqueIdentifier>{8abe2107-8d91-43fd-9b7c-f045e76e3839}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{5ba657ed-3e9b-434a-808a-a9f9e039b430}</UniqueIdentifier>
<UniqueIdentifier>{197d678e-2f31-4f9f-92d7-0f07a52e6c67}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{994f69bd-37f2-4bd7-b0dd-17ad994cf08f}</UniqueIdentifier>
<UniqueIdentifier>{af32e278-f3dd-4aa1-a2ee-defa709c8e69}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{7d368f1c-74c9-467b-80b0-128cd5f66f76}</UniqueIdentifier>
<UniqueIdentifier>{0234eb6e-2d72-4cde-ad85-e573207dc1a3}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{8e87c63e-9e10-4c09-a34a-44a9c630de83}</UniqueIdentifier>
<UniqueIdentifier>{cfad3c96-912f-4257-bcc5-56e4db3aa17e}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{b3d5faf2-95ec-4b26-a5af-4cbf560e49e9}</UniqueIdentifier>
<UniqueIdentifier>{a1007f06-0b6a-4d4b-ae49-5ca579de2f09}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{391a67c5-9b1b-402c-ab56-7a56bc035987}</UniqueIdentifier>
<UniqueIdentifier>{4bfd361c-840e-44ad-9710-e328ba148f9e}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{de335503-a61f-48c3-980c-a70541e94b2f}</UniqueIdentifier>
<UniqueIdentifier>{23e5f814-1af6-4af8-bfb7-18a4e5bfc9e4}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{efeb9d69-a7ed-4631-806e-a2c4a30fe4b2}</UniqueIdentifier>
<UniqueIdentifier>{5ec57e22-0d90-489b-a512-e4b4be22b6b1}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{d1c02a2a-2799-4726-880e-7c548ca4c575}</UniqueIdentifier>
<UniqueIdentifier>{60584647-da84-4b50-a694-bcef255858eb}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{248806ca-b7e7-447a-98ed-1ca3d243426a}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{1f13413b-759e-499f-b833-b5c6bcb55765}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{3f2d79c9-070e-4599-a674-739f82f9fbfd}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -351,13 +351,13 @@
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
<ClInclude Include="include\Poco\Net\MailStream.h"/>
@ -378,6 +378,8 @@
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp"/>
@ -477,6 +479,8 @@
<ClCompile Include="src\SMTPChannel.cpp"/>
<ClCompile Include="src\WebSocket.cpp"/>
<ClCompile Include="src\WebSocketImpl.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{868afd7b-9ddc-4099-b7d2-9422051a121d}</UniqueIdentifier>
<UniqueIdentifier>{8992cc5d-dce8-4cbd-9f79-d83fcacbceff}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{78b3c0fc-d752-48f5-a83a-c476145d29cb}</UniqueIdentifier>
<UniqueIdentifier>{ef0bc40b-4dea-4d70-baf2-411c917a2a04}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{f376f6e5-5c36-407f-8a1e-ee199e006221}</UniqueIdentifier>
<UniqueIdentifier>{972a588d-e448-43e1-977b-2d63e3aed8a5}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{4166578b-0db6-4181-97dd-7928827643d8}</UniqueIdentifier>
<UniqueIdentifier>{807bfc62-24fe-472d-89b1-0e4c2001d03a}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{b11b34d9-48fb-4635-976c-7b1e2f601e5a}</UniqueIdentifier>
<UniqueIdentifier>{4bb17e12-2ce2-4949-b304-6eb8af2d6289}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{8e596142-b445-4a03-b2a0-636629fa7b3c}</UniqueIdentifier>
<UniqueIdentifier>{33353466-e67b-44ff-85ca-5de84aede57c}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{690b97b4-9a6d-4abc-bd10-36dcc425095e}</UniqueIdentifier>
<UniqueIdentifier>{83cd1254-3b0c-4ed8-a35d-a1f121268c6b}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{8958f03a-b070-41fc-9923-3bc00af399d4}</UniqueIdentifier>
<UniqueIdentifier>{d9a30f35-503d-42ab-8682-89ad8d72d681}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{64e16e38-054f-49d0-9321-3489c6ca977a}</UniqueIdentifier>
<UniqueIdentifier>{c218d8e8-f8fa-42d7-87e9-06795ba738dc}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{247797c4-8afb-4499-84b1-1dd8437cacb1}</UniqueIdentifier>
<UniqueIdentifier>{361cfb55-d05a-468f-a94a-7a51ded1e1f0}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{ed02b09b-30ad-4eea-bb95-b8e753f91623}</UniqueIdentifier>
<UniqueIdentifier>{52e86aa3-1941-4e71-9678-04dfec6655d1}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{7f152f99-9399-4b1d-a80f-39df188952b0}</UniqueIdentifier>
<UniqueIdentifier>{307e34da-d304-456e-beaf-1f892ba64f8c}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{a9f3be6e-2ee0-4e5e-9d76-cbf6ab7ff7e7}</UniqueIdentifier>
<UniqueIdentifier>{5b66a17e-614b-4d1f-928d-72786f663402}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{2fe8f637-1419-4d6b-842a-307b45ab73f1}</UniqueIdentifier>
<UniqueIdentifier>{0a9e0188-c6a0-4c89-8042-d013eb9c5582}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{e5a62fdb-becc-4c39-aaaa-106e79ab5e5a}</UniqueIdentifier>
<UniqueIdentifier>{0783991c-f479-4684-af60-39de190a4691}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{a5048a86-ad4a-452e-9409-c1de45c6272e}</UniqueIdentifier>
<UniqueIdentifier>{7d4e934f-eb6d-4da3-907e-5d191756da92}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{ce27c701-96b3-48ea-9ce4-41a03ac25477}</UniqueIdentifier>
<UniqueIdentifier>{cd2fcefe-9696-475b-ab37-4c08b6e47299}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{3898a8a4-5ee7-4b34-a0e3-7f1d62aa0bf4}</UniqueIdentifier>
<UniqueIdentifier>{e14cc478-986c-4cf1-b016-f759f59a4df8}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{448680fc-cbe0-463c-bcef-67061553b960}</UniqueIdentifier>
<UniqueIdentifier>{fddc7781-3120-4b2e-bd72-24fab8eb2876}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{ff8d7576-47da-4843-a614-074b69cbdc81}</UniqueIdentifier>
<UniqueIdentifier>{3bf05b5b-843d-4a24-bc81-ee0ab271abc6}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{bbc32086-7f39-4a2a-b3c9-fd54ad5739ac}</UniqueIdentifier>
<UniqueIdentifier>{0df32b72-7869-427c-be84-7d93fd01d2f9}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{136d29f6-2556-4333-bd33-c33c5493c2ec}</UniqueIdentifier>
<UniqueIdentifier>{fc5a3893-7a92-4c7f-aa18-0deff8fb7ec3}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{b4c5f603-37ba-46f5-b135-20c9b9485acf}</UniqueIdentifier>
<UniqueIdentifier>{725a3534-81c8-4692-93fa-d19dcf94df05}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{fddcdb59-5692-4401-8711-a1f5aaed0eed}</UniqueIdentifier>
<UniqueIdentifier>{e60b3912-17e3-4da8-a18c-28bafb03bf29}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{9ff78a10-c12f-494f-ba04-e36e038f2f5a}</UniqueIdentifier>
<UniqueIdentifier>{d2bdc7f6-562f-421a-979e-017c1477f2b4}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{1330f6ba-4ae2-4e43-baef-a7503d518730}</UniqueIdentifier>
<UniqueIdentifier>{58d9e32b-6474-436f-90b9-0e03a72b52c7}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{b95728ac-29e2-48b7-b291-3f8127ec18b1}</UniqueIdentifier>
<UniqueIdentifier>{1700f029-1e81-4577-8ad4-e23c88db3407}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{da5918ef-f976-4f88-8fd9-ee788c14385d}</UniqueIdentifier>
<UniqueIdentifier>{dcdfdb7a-f57c-4cb5-a472-2159b221f3fa}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{0fbcfaec-bcc2-4074-b6e5-5c21d88ac55b}</UniqueIdentifier>
<UniqueIdentifier>{3966019b-9d88-4e47-aa4b-a9764c36b158}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{7c1d8e92-8c42-41e2-9709-4025acbba345}</UniqueIdentifier>
<UniqueIdentifier>{da8b4987-f460-4766-b89b-51b7397e856a}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{705b2179-605d-431d-8e05-2a44ad4ebc18}</UniqueIdentifier>
<UniqueIdentifier>{90149743-2979-4a92-a410-e7775624aece}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{600d7055-3dfc-4734-8220-64fc8010ac05}</UniqueIdentifier>
<UniqueIdentifier>{36354d0b-458f-4014-a56b-108d266f6127}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{cffa8a67-e06e-4071-a594-20240fc8f7d2}</UniqueIdentifier>
<UniqueIdentifier>{c904ae66-5ce7-4384-9a92-deb8c947fb32}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{b771108e-60ef-4320-88b1-bf4f7c521245}</UniqueIdentifier>
<UniqueIdentifier>{6aa80d93-797b-4ada-a0b0-e90c4a2e8cb0}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{670c47c7-dca3-498d-9f66-016fd8944a44}</UniqueIdentifier>
<UniqueIdentifier>{f9ad26ae-23e1-4479-a1a9-2db396440980}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{a34fbe55-2594-4c26-b717-84e062fed982}</UniqueIdentifier>
<UniqueIdentifier>{12c80174-c81f-4242-879a-984805cdc37f}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{d4bfa61b-e7d9-4101-8c33-6bbfe0f1518c}</UniqueIdentifier>
<UniqueIdentifier>{514d9218-2747-4a62-ae56-ba9e790a97a8}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{8caa48b2-fa82-4a2f-b8d6-febe1e8caca5}</UniqueIdentifier>
<UniqueIdentifier>{a1ab3ec6-6365-42c1-af1f-e59b49a254de}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{9682b5f6-9208-4678-b3d5-a0a3064aa7a8}</UniqueIdentifier>
<UniqueIdentifier>{70c708ce-dab0-47a9-8f46-bb65c1b1107b}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{35ac4b7f-89ac-4e41-88f2-da0d28ccb386}</UniqueIdentifier>
<UniqueIdentifier>{a3911999-71b8-4ece-8acc-8b30308c52da}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{a7875e68-cd65-4cd9-a5dd-6dcd7ad65329}</UniqueIdentifier>
<UniqueIdentifier>{539e0da2-26b1-4758-b63e-476076a75cf2}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{18077d14-f8e6-4d73-a9d8-85be79311339}</UniqueIdentifier>
<UniqueIdentifier>{bb000f13-92eb-44b9-ae49-25da40be51f7}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{e21a67b9-af67-4586-91e6-4ec7cf89a331}</UniqueIdentifier>
<UniqueIdentifier>{54061de0-20ef-4ece-954f-dc72228fa3b7}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{a6ae8f68-e668-4e2f-9ef0-621a6d08c3b1}</UniqueIdentifier>
<UniqueIdentifier>{c047f946-6d85-4d95-9067-c16e842224d8}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{0787ec62-4f72-4cee-bc0c-9d9ead93915d}</UniqueIdentifier>
<UniqueIdentifier>{ef6a40c2-9208-43ab-987a-18a3794723af}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{6b7dfa9b-da58-456b-a01e-29dc2eb48247}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{af21120c-95b2-44a1-939b-e69e55b1ab5f}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{4841abc5-52fe-4c7d-9f47-ed3080b09345}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -355,13 +355,13 @@
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
<ClInclude Include="include\Poco\Net\MailStream.h"/>
@ -382,6 +382,8 @@
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp"/>
@ -481,6 +483,8 @@
<ClCompile Include="src\SMTPChannel.cpp"/>
<ClCompile Include="src\WebSocket.cpp"/>
<ClCompile Include="src\WebSocketImpl.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{a3af4ef1-6f1f-4019-ad03-cf603baab7be}</UniqueIdentifier>
<UniqueIdentifier>{8a56f4f5-7d02-4904-9712-5548455e9dfa}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{1ff07142-2c75-4bc0-908c-7727b56857c0}</UniqueIdentifier>
<UniqueIdentifier>{a212859d-7da7-4e05-b0d8-90752be3f94f}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{75142fb5-987b-4a1e-970f-44f8418cd327}</UniqueIdentifier>
<UniqueIdentifier>{f7047606-5c9f-4b44-a656-07785c3cab63}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{9185cc10-b1f3-4afd-a30a-ee2e33dd994e}</UniqueIdentifier>
<UniqueIdentifier>{44541ffc-d111-454b-b6b0-5ffb28ba233d}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{68a3746d-7c99-46e3-8fcc-7febcd8ef76d}</UniqueIdentifier>
<UniqueIdentifier>{6ee8ec1d-3abb-41cd-a755-7494f055aeec}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{3e131394-38a4-4ab3-9f82-917e1e898dd7}</UniqueIdentifier>
<UniqueIdentifier>{a77dd5c2-1fdc-4c90-9e96-73875b9810c1}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{c0c86510-f1d6-47d4-88f3-63b69421df47}</UniqueIdentifier>
<UniqueIdentifier>{99095bb0-c212-4c24-a77c-7fc23b6112a5}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{a05a6147-f3e2-4bab-843d-0546b67bc609}</UniqueIdentifier>
<UniqueIdentifier>{c43242da-2e59-44cb-880c-504e99169cbe}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{b341409b-1308-4718-8aef-0c6608e490d7}</UniqueIdentifier>
<UniqueIdentifier>{cd09ad44-257e-4ad6-acbe-de6936ddb8aa}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{e852c0fb-8235-4c78-b8f6-6262cbb7eeaa}</UniqueIdentifier>
<UniqueIdentifier>{7fdf4262-ac26-4ce8-9162-2be7e9e559c3}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{454e3956-e034-4ed7-91fa-550fbe58f498}</UniqueIdentifier>
<UniqueIdentifier>{d0aa83cd-9afa-48b1-b588-4080124f7b49}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{e75fee2e-d917-41fb-81b1-f5e6bcee24aa}</UniqueIdentifier>
<UniqueIdentifier>{dee1d1c1-4446-42ee-b40d-091d2a1b0398}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{b56bf35d-6b29-4cdb-8dd0-942cc3280473}</UniqueIdentifier>
<UniqueIdentifier>{02b6dd6b-1094-4af4-a00c-20f11729253e}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{0c6f8de2-2013-4d9c-addd-ce6deb21a621}</UniqueIdentifier>
<UniqueIdentifier>{275e0474-f651-4aa3-b7c2-a90869abb744}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{3ab705c9-5cb2-452a-a125-dba390cdb8c2}</UniqueIdentifier>
<UniqueIdentifier>{ef2687d6-a517-44f3-bee7-e97cc9aa24b1}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{23c39bf2-b3cc-45a0-a0cf-7942fa542a11}</UniqueIdentifier>
<UniqueIdentifier>{59871822-507d-43dc-ac9b-8dfe76fb577f}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{573e3c60-e30b-4d30-af54-1f400ed01c6e}</UniqueIdentifier>
<UniqueIdentifier>{1dbd0702-ceec-4f57-a287-6ca430dca434}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{24346e33-f2d8-42d8-949b-8d1711e34991}</UniqueIdentifier>
<UniqueIdentifier>{cb79e883-2c74-4c9a-a2d7-c7c7caf2a59c}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{9cb400c4-43da-4a01-a032-e91e9bc0977b}</UniqueIdentifier>
<UniqueIdentifier>{32644429-fd5a-4233-a5df-d410a0561a2c}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{4823497f-32f7-41f8-a498-994684ea66e2}</UniqueIdentifier>
<UniqueIdentifier>{2b7f1983-009e-4870-aaab-54b3595b4494}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{072b1028-3a4a-4fb3-9186-708558a8bec9}</UniqueIdentifier>
<UniqueIdentifier>{5bf9b6ae-cbe1-4ac8-8fb2-7ade2e83a699}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{49f5cca8-1352-4e05-8fad-54a36924e4e3}</UniqueIdentifier>
<UniqueIdentifier>{66805cbf-afc5-4987-9202-c6629619a5d3}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{de2e3f31-772d-4cb7-b169-570f3a14660e}</UniqueIdentifier>
<UniqueIdentifier>{661eb990-2478-4b0c-8693-146e05e7ebee}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{42f5d684-ab7f-4aee-b5c1-7dea079afceb}</UniqueIdentifier>
<UniqueIdentifier>{2e74c8de-34fe-4aef-b988-e9d3574f221d}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{af8d3698-7ef7-463a-84a8-dcde9f4d7c7b}</UniqueIdentifier>
<UniqueIdentifier>{591083d4-f9e1-4c97-b412-305ce97073d3}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{fe614a37-e433-4891-9d80-7b6f6d105a9e}</UniqueIdentifier>
<UniqueIdentifier>{5a297919-9989-414d-b07e-3e8d9d151e42}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{dfd3d0c5-c585-400b-a344-ad738cd294ad}</UniqueIdentifier>
<UniqueIdentifier>{21b5ebf2-56f4-4e91-81ee-5885598c08af}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{7f8da00b-7e85-4734-9ebc-afa23d9369e8}</UniqueIdentifier>
<UniqueIdentifier>{22e4bdcf-a8b4-42d7-9134-431688663a62}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{2959d58a-f846-4834-974b-5207c26fb542}</UniqueIdentifier>
<UniqueIdentifier>{2930aa85-6122-4100-b575-24863510edde}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{4cf57737-d60f-4177-b083-9f00cb6686ea}</UniqueIdentifier>
<UniqueIdentifier>{6dab84de-443f-4731-853f-3ed84dcd8f0e}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{c40c0ee3-5034-413b-9cc7-f527a1c0b883}</UniqueIdentifier>
<UniqueIdentifier>{289862bd-c5d4-44ff-89d6-23cd986452d5}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{945d0d89-13f8-4040-b7a2-7c1cb08fd753}</UniqueIdentifier>
<UniqueIdentifier>{dd94726f-df1f-4b61-a48c-d456872e5310}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{5239666a-427a-4b69-9c39-b9e1e27d4e9c}</UniqueIdentifier>
<UniqueIdentifier>{9d694c91-87c4-43d0-8d62-b328ffb92a96}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{88971214-062e-4ada-a985-1914c32b15da}</UniqueIdentifier>
<UniqueIdentifier>{af7042ce-1728-413b-9ae8-dc3b06bd280b}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{7f363464-ac5c-4123-b334-e913b859e3e4}</UniqueIdentifier>
<UniqueIdentifier>{e7e875e3-b1f4-48a9-b8f5-79ff834e3511}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{95390bb3-6322-4cda-9075-d0627d95cb0a}</UniqueIdentifier>
<UniqueIdentifier>{cd13faa7-c7f4-4647-8da2-e96bd7d49b41}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{852964e1-041b-4b64-9db6-fb81057fb14b}</UniqueIdentifier>
<UniqueIdentifier>{ea847260-3182-49fe-8f7e-e700edecd5c9}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{80e88a16-3aea-4b06-8183-43fec4beff5c}</UniqueIdentifier>
<UniqueIdentifier>{7a1ddf83-d05d-4d44-b11c-96fcc75406f9}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{0b4ea484-3ef7-48f4-9229-292f458537b8}</UniqueIdentifier>
<UniqueIdentifier>{97ef1aea-37b6-4b01-8e01-c6e1405d422f}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{94aa65ed-d92b-4a34-9609-c102f1ec3b63}</UniqueIdentifier>
<UniqueIdentifier>{aab8bfd5-04a3-4c7d-befc-ec84e02ea846}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{2480d750-27fc-4eff-a166-adf56d3ea8e7}</UniqueIdentifier>
<UniqueIdentifier>{5967b928-fae3-49f0-ad2f-8568a28674fe}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{ecd50d25-a2c6-40f1-87c4-fdf20ee6979e}</UniqueIdentifier>
<UniqueIdentifier>{9d11424e-615a-4e9a-8949-8f1714d7bb1e}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{887d54f6-df14-4bbe-a03c-2ea5b551bacb}</UniqueIdentifier>
<UniqueIdentifier>{b6a56fc4-71c6-43f1-982e-afaf4958692b}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{756a9c38-5858-4121-a4d1-5c706d75616a}</UniqueIdentifier>
<UniqueIdentifier>{6cb305b8-2267-414d-8f7a-03bbbff2ed23}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{19d603a5-204f-41cf-a757-d28e910e34a1}</UniqueIdentifier>
<UniqueIdentifier>{9ca21cb6-5761-4cc3-8ec1-2d92ba39c9cd}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{a7290aac-51b3-4d96-bfda-8519d1fbb021}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{b488773f-2fcc-4af2-ac54-ab31038914f0}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{c2a2a6b5-e3f5-4881-8cd1-c4700bf76bc8}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -345,6 +345,8 @@
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
@ -449,6 +451,8 @@
<ClCompile Include="src\NTPEventArgs.cpp"/>
<ClCompile Include="src\NTPPacket.cpp"/>
<ClCompile Include="src\NullPartHandler.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
<ClCompile Include="src\PartHandler.cpp"/>
<ClCompile Include="src\PartSource.cpp"/>
<ClCompile Include="src\PartStore.cpp"/>

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{89dfa39e-ad24-46ea-86c9-f789630396dd}</UniqueIdentifier>
<UniqueIdentifier>{70effd40-579f-4b35-88e1-8c5c2f7dd5e9}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{a56cf516-c6be-43e7-85d7-25b0f3592e15}</UniqueIdentifier>
<UniqueIdentifier>{d6e0c1e0-ee61-4b34-95d8-60cc9065d830}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{f06b35d1-85d7-4f62-9e90-3cb8196459a4}</UniqueIdentifier>
<UniqueIdentifier>{32ad1b0e-a6ab-424e-839d-d52bdb56f345}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{4fda8f2b-2126-448b-943f-e91be8da76e8}</UniqueIdentifier>
<UniqueIdentifier>{5401dbb8-86fb-406a-8b46-b9c5ce93cce6}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{5ef4f74a-7a37-4736-8699-fe7a2c448d94}</UniqueIdentifier>
<UniqueIdentifier>{878a60b4-1807-4ceb-9c2f-2eee1e1dd004}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{29fd6308-9867-4e03-9116-d2ad61f2044d}</UniqueIdentifier>
<UniqueIdentifier>{5f667910-09cb-4367-a125-113ee3c28e3c}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{f3bf89e7-ed18-430a-b682-4d7dd0e6cb0c}</UniqueIdentifier>
<UniqueIdentifier>{fe6fcc09-f76d-4f81-9b96-d03e39128533}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{9d4e0317-69cf-4449-b4d8-5e821eaad176}</UniqueIdentifier>
<UniqueIdentifier>{9e81e2c5-efe9-47d6-bad1-749d9067bb0f}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{d3ef5ee1-0fa6-4a4a-8545-ebd2bcadc918}</UniqueIdentifier>
<UniqueIdentifier>{763bc264-5a2c-4d32-a527-ab84c0460c34}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{35b0c849-2665-41a1-8ac2-1a6b57aaaa49}</UniqueIdentifier>
<UniqueIdentifier>{8424bd69-7677-495d-869a-bd15c261ddca}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{570791b7-f6d0-4b76-a631-ee9afe3e0033}</UniqueIdentifier>
<UniqueIdentifier>{134ec01a-9de1-4224-8133-279b97050034}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{7b36ffec-98b6-464e-a41b-499958aa350c}</UniqueIdentifier>
<UniqueIdentifier>{46c5c26a-9503-45b4-8bfc-63d47fe94834}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{b9fab3e9-bc08-4edd-a621-095627ac25d7}</UniqueIdentifier>
<UniqueIdentifier>{fd964795-3846-41f1-9ff2-65676011d61d}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{2f4619a7-ca7a-4ff9-b130-5d7efb12d61f}</UniqueIdentifier>
<UniqueIdentifier>{0d0fee5f-73d3-4cb3-9a92-18ce1c82777a}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{7e2e0c29-96f0-4e01-8e25-50ecac3304f6}</UniqueIdentifier>
<UniqueIdentifier>{2f0a0f61-6f61-4414-96c4-96c5892dc18e}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{a44e7f01-d170-4f6e-a48e-8087b693f66e}</UniqueIdentifier>
<UniqueIdentifier>{8baf5722-d3df-4bd5-83c7-3e47ddeb73a7}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{8648d7c5-91da-4f15-959f-00c70ab0d886}</UniqueIdentifier>
<UniqueIdentifier>{507fbe2f-e2c2-40d2-8a43-e317f7445213}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{e691f99c-9535-4bb2-a511-cd3369a7c4d4}</UniqueIdentifier>
<UniqueIdentifier>{1ac3d85b-e599-4753-8c66-60f3dad02e95}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{39158408-141f-49b0-a948-abb40921ec55}</UniqueIdentifier>
<UniqueIdentifier>{12bf4e5e-07e3-40a3-9713-ac6d4876ba87}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{390c8e67-a893-4a2a-a663-01ff271fa94d}</UniqueIdentifier>
<UniqueIdentifier>{b51d3a42-7842-459c-9574-da9b1bf5fd36}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{90db6b5f-da58-4130-80eb-915f56caf31b}</UniqueIdentifier>
<UniqueIdentifier>{3bbb0c78-abb7-40d3-9e90-cd53cb7e0d73}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{f5a79864-21ff-46ff-a51e-b9816672ba63}</UniqueIdentifier>
<UniqueIdentifier>{1e709b86-a55c-4247-9e72-11d73c0c59d1}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{2c553354-e4d1-42d1-b61e-50806a67969d}</UniqueIdentifier>
<UniqueIdentifier>{6832f178-d5bf-4390-97fb-88b3163a6164}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{dd584b28-3bfe-473a-90e0-3af9be253312}</UniqueIdentifier>
<UniqueIdentifier>{9141f96a-659d-485c-84a5-cbe18390eb7e}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{681d4815-663b-49cf-a52b-08413da0b8da}</UniqueIdentifier>
<UniqueIdentifier>{7878109b-58d6-4136-bb08-4d11ad958619}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{d62aff28-7886-4935-836c-38e21ec280f0}</UniqueIdentifier>
<UniqueIdentifier>{01cf4d8f-22db-4373-b839-8cfe76d3bd37}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{31103b5d-344c-4c16-abfb-d930a36cffd7}</UniqueIdentifier>
<UniqueIdentifier>{b1c2ef28-941b-420e-9569-cb1b7bd92104}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{279e2d67-1ece-4531-97f1-a2376302151e}</UniqueIdentifier>
<UniqueIdentifier>{b64b52c4-8b18-46bf-854d-1c83ec53ddab}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{414e932f-0230-4488-9534-c126f0a7df92}</UniqueIdentifier>
<UniqueIdentifier>{004ebd58-756e-4abd-a395-be34faf965cd}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{2c9ab677-6961-43c8-a0ce-b24336092f74}</UniqueIdentifier>
<UniqueIdentifier>{2cdf071e-9fd2-48e6-9209-46cde4b9453f}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{28d11e96-e676-412f-958f-75d39a089b69}</UniqueIdentifier>
<UniqueIdentifier>{de224d11-d1aa-446f-950e-f2c3cef03495}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{909109ac-7394-4346-8016-3bcbace65eab}</UniqueIdentifier>
<UniqueIdentifier>{4799f8e2-9325-4ca4-9375-f1e87bc9903c}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{f23c7a2a-67ec-45b5-b05b-049d69f18164}</UniqueIdentifier>
<UniqueIdentifier>{854312e2-cb0a-4e5b-ad0d-618488a00cfb}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{d2970aed-fb39-48d8-8afd-727216457982}</UniqueIdentifier>
<UniqueIdentifier>{a275768d-9e5a-4709-b55d-582e3dcdd044}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{2aad1647-ca99-4897-915e-eb64993cad6b}</UniqueIdentifier>
<UniqueIdentifier>{2a99714c-327d-49b4-994f-c26ea561fd83}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{4582cba3-5a99-4b1d-a651-e9df1afaadec}</UniqueIdentifier>
<UniqueIdentifier>{ae71deb7-6615-420e-b56d-608e2a3157f6}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{9df8ff4b-e5f7-481e-9686-fe108208bf5e}</UniqueIdentifier>
<UniqueIdentifier>{fda84b24-dec7-401d-9342-f464863a568c}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{c0f83b5e-c2f2-44a2-810d-363842ef0598}</UniqueIdentifier>
<UniqueIdentifier>{a3a094c0-6c8d-481a-93cb-2b9188b5de0c}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{c6739a2a-c3d5-42ed-b304-d62e10b63034}</UniqueIdentifier>
<UniqueIdentifier>{7ab3821c-9806-43ab-8828-b57480a2c87c}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{bc2d78a7-970e-4f8b-8a5d-2c293434bb7c}</UniqueIdentifier>
<UniqueIdentifier>{12dc26f8-8401-450d-b2b4-466389ffbbec}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{96b695bb-bc21-4a6b-815b-67070e178941}</UniqueIdentifier>
<UniqueIdentifier>{0c086ae8-9f8a-4c4d-a95d-26d13418972d}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{c530a5f0-e938-4622-b8af-09d3ae12ccc9}</UniqueIdentifier>
<UniqueIdentifier>{10c68257-0862-47dd-8980-41e9e15c5cfd}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{f53517f1-ab79-406d-9225-e21233b52c1e}</UniqueIdentifier>
<UniqueIdentifier>{4ba8a208-184b-4df0-8707-a7be92f2d7fb}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{30ce306d-e65b-47ae-8874-dcf40f07970b}</UniqueIdentifier>
<UniqueIdentifier>{f7c228e1-6718-46d7-9800-ba2cccbe0a03}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{eefbc204-bc81-415e-b3a3-31aec354b648}</UniqueIdentifier>
<UniqueIdentifier>{78f1b313-c81d-47d6-bcbe-419208c76ebf}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{27a9c78f-e3e1-4f6a-9e33-79dcb6417f63}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{8bee1113-b0b2-4ca0-a388-f35276c1f0db}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{5dd5779a-61bb-4f38-8c4f-99e7f15de26e}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -753,10 +753,12 @@
Name="Reactor">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketConnector.h"/>
<File
@ -765,8 +767,6 @@
RelativePath=".\include\Poco\Net\SocketNotifier.h"/>
<File
RelativePath=".\include\Poco\Net\SocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
</Filter>
<Filter
Name="Source Files">
@ -903,6 +903,23 @@
RelativePath=".\src\WebSocketImpl.cpp"/>
</Filter>
</Filter>
<Filter
Name="OAuth">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\OAuth10Credentials.h"/>
<File
RelativePath=".\include\Poco\Net\OAuth20Credentials.h"/>
</Filter>
<Filter
Name="Source Files">
<File
RelativePath=".\src\OAuth10Credentials.cpp"/>
<File
RelativePath=".\src\OAuth20Credentials.cpp"/>
</Filter>
</Filter>
<File
RelativePath="..\DLLVersion.rc">
<FileConfiguration

View File

@ -774,10 +774,12 @@
Name="Reactor">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketConnector.h"/>
<File
@ -786,8 +788,6 @@
RelativePath=".\include\Poco\Net\SocketNotifier.h"/>
<File
RelativePath=".\include\Poco\Net\SocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
</Filter>
<Filter
Name="Source Files">
@ -924,6 +924,23 @@
RelativePath=".\src\WebSocketImpl.cpp"/>
</Filter>
</Filter>
<Filter
Name="OAuth">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\OAuth10Credentials.h"/>
<File
RelativePath=".\include\Poco\Net\OAuth20Credentials.h"/>
</Filter>
<Filter
Name="Source Files">
<File
RelativePath=".\src\OAuth10Credentials.cpp"/>
<File
RelativePath=".\src\OAuth20Credentials.cpp"/>
</Filter>
</Filter>
<File
RelativePath="..\DLLVersion.rc">
<FileConfiguration

View File

@ -773,10 +773,12 @@
Name="Reactor">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketConnector.h"/>
<File
@ -785,8 +787,6 @@
RelativePath=".\include\Poco\Net\SocketNotifier.h"/>
<File
RelativePath=".\include\Poco\Net\SocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
</Filter>
<Filter
Name="Source Files">
@ -923,6 +923,23 @@
RelativePath=".\src\WebSocketImpl.cpp"/>
</Filter>
</Filter>
<Filter
Name="OAuth">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\OAuth10Credentials.h"/>
<File
RelativePath=".\include\Poco\Net\OAuth20Credentials.h"/>
</Filter>
<Filter
Name="Source Files">
<File
RelativePath=".\src\OAuth10Credentials.cpp"/>
<File
RelativePath=".\src\OAuth20Credentials.cpp"/>
</Filter>
</Filter>
<File
RelativePath="..\DLLVersion.rc">
<FileConfiguration

View File

@ -349,13 +349,13 @@
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
<ClInclude Include="include\Poco\Net\MailStream.h"/>
@ -376,6 +376,8 @@
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp"/>
@ -475,6 +477,8 @@
<ClCompile Include="src\SMTPChannel.cpp"/>
<ClCompile Include="src\WebSocket.cpp"/>
<ClCompile Include="src\WebSocketImpl.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{8e3d69e2-e6fb-4342-a548-76a4208c4c52}</UniqueIdentifier>
<UniqueIdentifier>{0e684948-188b-4dff-94ba-5a3b2592d958}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{b8eaea0c-f111-4370-b0b5-2392f64789ff}</UniqueIdentifier>
<UniqueIdentifier>{f5f055c6-353e-4e82-a17a-3a9f44e35b2f}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{5cddac8c-cf82-4ccc-9376-2aedf97126b1}</UniqueIdentifier>
<UniqueIdentifier>{27793d08-064c-4bc9-9aac-62a145b1ef8e}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{b809ef86-991a-49ec-b0d4-31920f023353}</UniqueIdentifier>
<UniqueIdentifier>{2bac578d-6fb2-474b-a070-ae8237a10838}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{c5005892-f777-4680-a595-e6c0cf6a6556}</UniqueIdentifier>
<UniqueIdentifier>{ed6d7692-5db7-4c1a-960f-f97dd2d0c70b}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{6c12f3a1-32ec-4cde-be86-1a1758af9e36}</UniqueIdentifier>
<UniqueIdentifier>{a256aea2-3631-497b-aae5-b9e7e36d70f6}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{90a5ec99-de61-45ac-8df5-464b6f3f55e2}</UniqueIdentifier>
<UniqueIdentifier>{380049ff-c872-4bce-8c04-21096336a30d}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{02fc3b1b-7f49-4dd4-865c-48e727e4dea9}</UniqueIdentifier>
<UniqueIdentifier>{f49e216c-de1b-43ba-9ce1-b4742bc34d0e}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{c159daf2-91e7-4ddd-b9c1-410a330e065d}</UniqueIdentifier>
<UniqueIdentifier>{a2b7c6c5-107d-4887-b7c2-550ec6d29be7}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{63524e47-ab28-45a9-a7c6-a1d625a31a94}</UniqueIdentifier>
<UniqueIdentifier>{ac4037d9-8cbc-4345-80c6-9be190c99a0a}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{ce030e8e-ab33-4a72-9d7d-238fd5626d70}</UniqueIdentifier>
<UniqueIdentifier>{7ce50c4c-91cb-4f9f-abe5-49dc62820e4e}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{023a942d-5392-4906-911a-646466af90a1}</UniqueIdentifier>
<UniqueIdentifier>{70a4de8f-06c7-4156-9b42-180376586912}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{9e7643ad-914c-4993-9d6c-7285746d6941}</UniqueIdentifier>
<UniqueIdentifier>{36fc189f-7e0d-482f-996b-fa936fc59258}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{7f990c8c-a319-4296-bc0a-638bfb5a5874}</UniqueIdentifier>
<UniqueIdentifier>{6894c44b-9bdf-4aa9-8a69-d9b7f87a615c}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{4015d430-f282-42fc-b527-37b4e7876773}</UniqueIdentifier>
<UniqueIdentifier>{822bde50-d60c-4920-b7c6-6b523089ab0b}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{7f51a35c-b758-42a2-81f9-6c5867371319}</UniqueIdentifier>
<UniqueIdentifier>{562cad03-3ad8-47c3-90e3-499cc41a4bb9}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{e17e8d3a-5d4f-4a05-b48e-a5bd720f4f15}</UniqueIdentifier>
<UniqueIdentifier>{45b1837d-b60a-49b8-969b-02f8eed03576}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{9e7f1497-e359-4de1-a646-41c230bdd934}</UniqueIdentifier>
<UniqueIdentifier>{8ddf3dde-ea40-4a6f-a3e5-0b3fb77ec9c7}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{1001c202-18e1-4527-901a-490056b7d062}</UniqueIdentifier>
<UniqueIdentifier>{599127d7-ea32-4912-b5ac-0cc986a7d3af}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{db1fec5a-6f39-4911-80d7-d4c80fd6e4e5}</UniqueIdentifier>
<UniqueIdentifier>{75a17a9a-096f-46c2-a1c9-f5fdcc115d6c}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{74d3c551-5751-4275-b352-fecb4b654e2f}</UniqueIdentifier>
<UniqueIdentifier>{b7baf8b5-562a-4830-bf76-eeac4fc0b7f0}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{48d9cbbb-5706-4e22-8d38-fc613de77d27}</UniqueIdentifier>
<UniqueIdentifier>{74a8513c-f327-44f2-b379-e40b3ceb0921}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{d576555e-2400-4972-81dc-a37494442d2d}</UniqueIdentifier>
<UniqueIdentifier>{f87ddd8a-31cf-462a-805f-34a0d7e86f35}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{0ebe2556-1333-448c-8405-3eaf24ac4595}</UniqueIdentifier>
<UniqueIdentifier>{0035c77b-387b-4c80-ad7a-e9642adcdac4}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{ec35dc9e-bb87-480a-895a-d736402c77b5}</UniqueIdentifier>
<UniqueIdentifier>{271e2d93-f4c1-4647-bcc6-c39079eb1814}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{8c2f48b3-210e-4fe4-8df1-3cddadb00c10}</UniqueIdentifier>
<UniqueIdentifier>{c1406825-b11d-4a58-bc0f-f233b897e148}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{d562603f-ac84-4a0a-987c-6209a8b7f2f0}</UniqueIdentifier>
<UniqueIdentifier>{1508fcf5-bb61-4c64-9506-7ce242b25ce9}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{45af0262-1f04-4711-a9b2-d2157e5c6de4}</UniqueIdentifier>
<UniqueIdentifier>{e7f40f63-96fd-42a8-842b-d115588537ca}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{4a9e8c9e-98ee-4786-9551-4de7380346fa}</UniqueIdentifier>
<UniqueIdentifier>{49869627-d039-4800-b2ed-2dd7093881c6}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{359dbb68-a896-4ea2-a2d8-704660c9dfc9}</UniqueIdentifier>
<UniqueIdentifier>{6aec4b6b-e209-4372-8761-42de21b05fad}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{f3da7cc6-9c3c-45a7-8875-714df53001c1}</UniqueIdentifier>
<UniqueIdentifier>{0806b807-5008-48c3-931f-b1eb71a1ebeb}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{e9141d26-ed7e-448a-83a3-44eb355ab332}</UniqueIdentifier>
<UniqueIdentifier>{9454a93e-1d76-4d11-bd45-8a6e530ba1c5}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{39bbdf81-b2a5-43bf-848b-0f9cd971fa8e}</UniqueIdentifier>
<UniqueIdentifier>{7815863b-a650-478b-8d13-88f54df0d491}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{ccfae288-932d-4df4-9242-c6624ae873ad}</UniqueIdentifier>
<UniqueIdentifier>{d1941515-ad0b-443f-8226-57996e0efd93}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{3d9c8d6b-43b5-4b4e-89aa-22f93bc3be6b}</UniqueIdentifier>
<UniqueIdentifier>{24474967-8b4c-4b9f-9d04-c375b435e030}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{0023c2ce-68d8-45b0-ae82-7b1ee5aa7663}</UniqueIdentifier>
<UniqueIdentifier>{a30c8c19-349c-4115-96e3-df5221dcfc0e}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{0bd54d17-d778-4aaa-a715-4a708ffb2337}</UniqueIdentifier>
<UniqueIdentifier>{430f415a-4f7e-4e52-b8be-0b07466b6ea7}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{a78d68b6-fcd3-470e-bbaf-b8ccfae9ce0a}</UniqueIdentifier>
<UniqueIdentifier>{5730f8c8-c848-4dc7-b719-835e7c1a515c}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{8b3d99b1-15f9-46aa-a045-3162f98185b3}</UniqueIdentifier>
<UniqueIdentifier>{2c682dff-ce49-4559-9406-fc66389af334}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{68d93f08-e6e3-411d-b51f-c96104db387f}</UniqueIdentifier>
<UniqueIdentifier>{e4dbce30-5a35-448e-b0b4-54aa03ea668f}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{4351dba7-7a0f-4a17-98c6-7f5e0191f49c}</UniqueIdentifier>
<UniqueIdentifier>{67d1f965-0818-493e-8ea3-a428f3af0056}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{57e8ddec-29c4-43ee-a420-b0ac73335153}</UniqueIdentifier>
<UniqueIdentifier>{620f7a52-9caa-4b4d-a02f-99ea1cb4477c}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{12f50834-a755-416e-b3c3-7529c4577b2f}</UniqueIdentifier>
<UniqueIdentifier>{41e97600-b364-4e51-bf08-bb0bb960fadf}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{cdfa453e-df49-4e05-982f-2f17efa5fe33}</UniqueIdentifier>
<UniqueIdentifier>{3c9e53be-2c27-4186-af38-7addd2950eed}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{5aeb733f-114c-4a71-8616-54c487d193b4}</UniqueIdentifier>
<UniqueIdentifier>{d9718db5-45ff-41da-89d5-51903bf8bfef}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{63d8e138-5f44-474c-b7d1-db4350081f4e}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{fcd2535e-2d48-493b-95fd-48fed56678f5}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{8266beb0-ec3e-45a7-a1ca-92508a66551e}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -353,13 +353,13 @@
<ClInclude Include="include\Poco\Net\HTMLForm.h"/>
<ClInclude Include="include\Poco\Net\FTPClientSession.h"/>
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\SocketConnector.h"/>
<ClInclude Include="include\Poco\Net\SocketNotification.h"/>
<ClInclude Include="include\Poco\Net\SocketNotifier.h"/>
<ClInclude Include="include\Poco\Net\SocketReactor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\MailMessage.h"/>
<ClInclude Include="include\Poco\Net\MailRecipient.h"/>
<ClInclude Include="include\Poco\Net\MailStream.h"/>
@ -380,6 +380,8 @@
<ClInclude Include="include\Poco\Net\SMTPChannel.h"/>
<ClInclude Include="include\Poco\Net\WebSocket.h"/>
<ClInclude Include="include\Poco\Net\WebSocketImpl.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp"/>
@ -479,6 +481,8 @@
<ClCompile Include="src\SMTPChannel.cpp"/>
<ClCompile Include="src\WebSocket.cpp"/>
<ClCompile Include="src\WebSocketImpl.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc">

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{e08e44b4-9dec-4cb6-9204-ccdc38834b75}</UniqueIdentifier>
<UniqueIdentifier>{8b79740f-5f2b-4bb8-b7c2-7d8ade7895fb}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{d384df7b-2a2f-4251-8fb0-2d52a264187c}</UniqueIdentifier>
<UniqueIdentifier>{77b093a0-7e8a-46ad-b323-3e3ee536a44b}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{b99299de-9786-4de4-b161-dd6281eff07a}</UniqueIdentifier>
<UniqueIdentifier>{38981bf1-2b07-4388-83b8-893ba56ab97a}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{6fdfaade-d5d8-4d21-99b5-65cf3094e1ee}</UniqueIdentifier>
<UniqueIdentifier>{29a1edd8-5054-4870-a991-36d0b058834a}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{fd4621e4-cc12-4e60-a9cb-b35d51d2b688}</UniqueIdentifier>
<UniqueIdentifier>{3db91091-e499-481a-9d9f-c0b10e467219}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{8be2664c-7fd9-4554-8fd8-2663f0b697fd}</UniqueIdentifier>
<UniqueIdentifier>{36dbb957-a3d0-428e-a185-c5d863d9ddc9}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{8fae8720-c87a-4715-af8f-9eed22ff2222}</UniqueIdentifier>
<UniqueIdentifier>{54e0fe28-0a82-4a93-aead-eb48a3308e3c}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{60e42c48-f36b-4a4d-9a02-a17f7ed02a5d}</UniqueIdentifier>
<UniqueIdentifier>{1678d97d-c659-4734-a1c7-d914bf593a78}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{382f1c20-cd9d-4eb7-8ebc-ab25adf00811}</UniqueIdentifier>
<UniqueIdentifier>{bc802b92-3e76-409f-86c3-014e4e5e3c73}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{3e3a2e1b-9e00-4c7c-9908-663ca50ff3e0}</UniqueIdentifier>
<UniqueIdentifier>{92adeefb-c441-4dec-a953-af8deaa7af42}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{584d2538-45c0-4492-bc47-a376286a835a}</UniqueIdentifier>
<UniqueIdentifier>{2aa73222-db5d-4d81-9d4b-ad05e76690b5}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{e05f00e4-651e-4472-a2f2-b7a2e5d80ef6}</UniqueIdentifier>
<UniqueIdentifier>{16785a5c-57b7-43b8-b04f-ecaaf820abf9}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{387fdb73-e79e-4062-9a6a-4bb0b0ff9bb6}</UniqueIdentifier>
<UniqueIdentifier>{449aee27-1278-40c1-bc15-1bf04488f040}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{1acfaba3-e89b-420c-99ea-09f50f568039}</UniqueIdentifier>
<UniqueIdentifier>{863eed1a-0ed6-4b0d-b760-67a9092e6079}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{b303a7c0-baaf-44c6-8012-b076ef9071a5}</UniqueIdentifier>
<UniqueIdentifier>{5d8d8f89-c248-46fc-86b9-45b9ae00799b}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{464b2df0-d7f1-4456-be1f-70a8fd5f0847}</UniqueIdentifier>
<UniqueIdentifier>{dd2ecbc0-e0a1-4cc4-91f5-123002ec3708}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{af432d68-324c-472f-9bd8-bc7743356505}</UniqueIdentifier>
<UniqueIdentifier>{485d1ab2-c019-4edf-8e2c-0a522addd714}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{9d693794-b193-41f2-9948-6ddde571830d}</UniqueIdentifier>
<UniqueIdentifier>{81852566-d474-40e1-8391-40319e9e74bb}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{c1cf6cec-300b-4735-8eeb-351c371cef69}</UniqueIdentifier>
<UniqueIdentifier>{957c2e9c-63c7-4bdb-9c7b-9bc09db5aa35}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{0b87b631-0302-4d2d-b269-a5e6c10092d9}</UniqueIdentifier>
<UniqueIdentifier>{c328ee9c-1a96-4c38-9449-71b6fbc324d4}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{500c8154-3f86-467a-a176-56b00036634c}</UniqueIdentifier>
<UniqueIdentifier>{c62b6c96-a553-4082-a5a0-709593a212ae}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{41dfd08a-40f1-4375-90e7-9ed4f6053584}</UniqueIdentifier>
<UniqueIdentifier>{58108adb-6dd3-4e32-9454-163dc6cbc840}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{c198e1d9-6477-49da-af2a-050ac5a108d3}</UniqueIdentifier>
<UniqueIdentifier>{579a38d6-6459-40d3-81f1-b6b969e6f5bf}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{068c3124-2108-43f2-9141-7a582ef0cefb}</UniqueIdentifier>
<UniqueIdentifier>{74fb4754-53c9-4a6c-999a-8e2a028eb6ec}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{63ab2416-6ce9-4038-9531-1efe3bf57a65}</UniqueIdentifier>
<UniqueIdentifier>{69cf3d26-1928-4635-adea-69f24ccd303a}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{6477027b-a9ec-4c44-85ec-17395759a843}</UniqueIdentifier>
<UniqueIdentifier>{708f84a9-d3f2-4f69-afcb-bfe8301601d6}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{a2ddff38-4bcb-4420-90ca-4a7df791973d}</UniqueIdentifier>
<UniqueIdentifier>{32582505-392e-4422-9b81-805b2ffa67ce}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{4ea53f8e-ae8a-40aa-97ea-a7635d44b2c9}</UniqueIdentifier>
<UniqueIdentifier>{33685e8c-a08a-4040-ac17-7b265fc4d676}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{48b3bff1-486a-477c-b039-c3f129239359}</UniqueIdentifier>
<UniqueIdentifier>{a9948dc1-873b-41cc-aa83-4b4c93f6531e}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{a5dec7c3-d553-4e65-98ae-7099630cf8c2}</UniqueIdentifier>
<UniqueIdentifier>{5d81c21e-73a7-4b3a-941e-038fde18ef1b}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{2e41bfe4-defc-4e08-aebf-59bc3f726d1f}</UniqueIdentifier>
<UniqueIdentifier>{29a59296-dae7-4afa-8d4f-89990462160b}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{b5c10625-5be1-4d82-b18b-d4427e0db3ad}</UniqueIdentifier>
<UniqueIdentifier>{c4979f45-3f19-4f16-a166-07722a9f6c12}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{5e3e4153-dbd4-421e-80d8-0a36f80b745d}</UniqueIdentifier>
<UniqueIdentifier>{eeb87922-1772-4949-827e-1ad5196d4a5c}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{0a0e56d0-f5db-4a6b-b9f3-af6aa63aa4ee}</UniqueIdentifier>
<UniqueIdentifier>{7e3a52a7-a1a2-478a-aeba-26cb0738aacd}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{2245d37e-d376-4be0-94ce-505a4cb45972}</UniqueIdentifier>
<UniqueIdentifier>{bd24cab5-fca0-4995-86fb-6cf19e520e5e}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{3cd5e464-0ef2-4804-812c-3501fee0948f}</UniqueIdentifier>
<UniqueIdentifier>{ca2dfcea-cd5c-401e-aba8-831030e983ac}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{80548011-9377-4157-b6e6-e7e6b34560e0}</UniqueIdentifier>
<UniqueIdentifier>{8ce9a419-885a-4a0d-8f8d-635dc406ac0b}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{9b504655-465f-4539-87a9-4f9b8a64e35d}</UniqueIdentifier>
<UniqueIdentifier>{54b4b901-ef04-4415-9ee8-fe71593cf437}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{4c98bd72-536b-42b7-981a-b9cc2159d116}</UniqueIdentifier>
<UniqueIdentifier>{ffe2e5cf-56f4-4052-8015-d761f1ae62bd}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{bcd7c17b-156e-4da1-bd17-085986baf014}</UniqueIdentifier>
<UniqueIdentifier>{edcdafcb-8e5b-414d-ac01-d77ace4d6364}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{61f7bb72-fe65-48b9-9933-53e9c810d7d1}</UniqueIdentifier>
<UniqueIdentifier>{912cf4a5-aed2-4007-8aca-52b24c993d46}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{0eeec5eb-646b-4aad-a63c-4a8bc7cea9f9}</UniqueIdentifier>
<UniqueIdentifier>{c26c1a41-3dbb-4321-a760-ed606b2f699d}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{eeea8a4f-6f5e-4517-8ac9-7534474ebc2b}</UniqueIdentifier>
<UniqueIdentifier>{4b5d9420-58d1-4930-9229-8928748b2ffd}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{45320c9b-7dea-4e4d-a4d0-02de98c9e38f}</UniqueIdentifier>
<UniqueIdentifier>{d2ccadb8-3d21-4822-92c0-f8e223e80464}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{c9cf3a12-3044-459e-bfcb-578999fee2e7}</UniqueIdentifier>
<UniqueIdentifier>{b6705b4c-3825-47a1-ab60-bfca0dcd5048}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{62e28747-6165-4c1b-842c-2fbf329334fe}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{f5e0a5cc-7920-4e59-a308-9627618a4c50}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{85cdb27c-4252-44b5-862c-e868e38bd1c8}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -343,6 +343,8 @@
<ClInclude Include="include\Poco\Net\NTPEventArgs.h"/>
<ClInclude Include="include\Poco\Net\NTPPacket.h"/>
<ClInclude Include="include\Poco\Net\NullPartHandler.h"/>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h"/>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h"/>
<ClInclude Include="include\Poco\Net\PartHandler.h"/>
@ -447,6 +449,8 @@
<ClCompile Include="src\NTPEventArgs.cpp"/>
<ClCompile Include="src\NTPPacket.cpp"/>
<ClCompile Include="src\NullPartHandler.cpp"/>
<ClCompile Include="src\OAuth10Credentials.cpp"/>
<ClCompile Include="src\OAuth20Credentials.cpp"/>
<ClCompile Include="src\PartHandler.cpp"/>
<ClCompile Include="src\PartSource.cpp"/>
<ClCompile Include="src\PartStore.cpp"/>

View File

@ -2,139 +2,148 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="NetCore">
<UniqueIdentifier>{748b70d8-8d1f-4d4a-8030-4db4de82959c}</UniqueIdentifier>
<UniqueIdentifier>{aac5d536-c1be-4f4e-8c57-27889d98e145}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Header Files">
<UniqueIdentifier>{f938698e-2091-4c7d-86fb-a270ea4dca1b}</UniqueIdentifier>
<UniqueIdentifier>{a61efc71-7221-4db3-afa0-2001b72c747a}</UniqueIdentifier>
</Filter>
<Filter Include="NetCore\Source Files">
<UniqueIdentifier>{865c5f06-57a4-4cbb-8dc1-fae5f4e03b9f}</UniqueIdentifier>
<UniqueIdentifier>{3c1563e7-c552-4b5a-8c4c-5669162386f4}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets">
<UniqueIdentifier>{3ca197ab-8a07-4ec5-843e-e71361b0d374}</UniqueIdentifier>
<UniqueIdentifier>{93d957f5-4326-456f-b5e9-da92263a1532}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Header Files">
<UniqueIdentifier>{70fbd523-176b-45ce-9d6b-d3209ea4cf38}</UniqueIdentifier>
<UniqueIdentifier>{1283a815-6cfb-4c76-8a2d-ff1e35776629}</UniqueIdentifier>
</Filter>
<Filter Include="Sockets\Source Files">
<UniqueIdentifier>{bcbcec0d-8320-4a40-bc07-45b07457a956}</UniqueIdentifier>
<UniqueIdentifier>{087ae413-7ab3-4a4c-a378-c038e4a4127e}</UniqueIdentifier>
</Filter>
<Filter Include="Messages">
<UniqueIdentifier>{72c8a630-ae81-41e1-a06f-ec9bfb71da3e}</UniqueIdentifier>
<UniqueIdentifier>{52d401e2-bb15-453e-8ce3-ee8664fc38a9}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Header Files">
<UniqueIdentifier>{8de4887d-12cc-49f4-a746-88990a02bc00}</UniqueIdentifier>
<UniqueIdentifier>{ff371447-ea14-4e41-85d1-3ff83d040ff5}</UniqueIdentifier>
</Filter>
<Filter Include="Messages\Source Files">
<UniqueIdentifier>{97181ae3-a577-422a-8d8d-182f82db1342}</UniqueIdentifier>
<UniqueIdentifier>{77c5e3e7-2eb4-4d7f-aa37-ec4115e7b8fb}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP">
<UniqueIdentifier>{75d12a04-aa53-4907-9360-809682adbca5}</UniqueIdentifier>
<UniqueIdentifier>{edccbc3c-bb83-44ab-a803-66012bc97817}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Header Files">
<UniqueIdentifier>{5ba5dde3-896d-4a3e-8ef7-83b8adcfadd5}</UniqueIdentifier>
<UniqueIdentifier>{f6b58ff8-dc88-4383-a9e1-6fecee9b6748}</UniqueIdentifier>
</Filter>
<Filter Include="HTTP\Source Files">
<UniqueIdentifier>{efeec3b4-5769-4ea5-9bed-d48d65c761ff}</UniqueIdentifier>
<UniqueIdentifier>{abbb2a15-1246-452a-ac4b-b2f535376bcd}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer">
<UniqueIdentifier>{197fbe09-5b0e-4b05-b0b9-acd3bf8c38c6}</UniqueIdentifier>
<UniqueIdentifier>{6b2b7dd6-3f79-47b4-aa0c-828464eda990}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Header Files">
<UniqueIdentifier>{067ee135-4cb2-4f86-9625-5d3d7440f4e0}</UniqueIdentifier>
<UniqueIdentifier>{79926dbc-d9e6-46ab-9ded-8765a1f6ca91}</UniqueIdentifier>
</Filter>
<Filter Include="TCPServer\Source Files">
<UniqueIdentifier>{f1b5945c-e137-47a1-b1e7-c4a0b92daeaa}</UniqueIdentifier>
<UniqueIdentifier>{75224067-227b-4b22-9094-2d103cbd38c6}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer">
<UniqueIdentifier>{33a78b95-ff6d-4597-a94e-ae61e52e0885}</UniqueIdentifier>
<UniqueIdentifier>{a71977ef-8430-4d4a-aac5-97467ff01938}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Header Files">
<UniqueIdentifier>{2adc4b30-fc61-40b9-a43f-5a7721b32e5e}</UniqueIdentifier>
<UniqueIdentifier>{a717eca0-6864-45f1-86cb-61d423fdfbe8}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPServer\Source Files">
<UniqueIdentifier>{04e57c25-a378-4689-8d5b-2f99ba8d28fa}</UniqueIdentifier>
<UniqueIdentifier>{e8c83d6f-a959-4910-81f5-073341a0b500}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient">
<UniqueIdentifier>{f364fcab-b7ab-4d8b-ad5b-db828e7515ef}</UniqueIdentifier>
<UniqueIdentifier>{61903a63-97ac-40ba-a478-3438bfe14907}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Header Files">
<UniqueIdentifier>{14953248-c3d6-4e3d-bd32-fa4006de441a}</UniqueIdentifier>
<UniqueIdentifier>{902b73d2-b62d-4c32-ba84-55548cf7ca1c}</UniqueIdentifier>
</Filter>
<Filter Include="HTTPClient\Source Files">
<UniqueIdentifier>{cfe325e8-5db2-4c88-bd77-22b780e4f528}</UniqueIdentifier>
<UniqueIdentifier>{a78d0f23-529a-4b8f-98b4-724d9475ca4f}</UniqueIdentifier>
</Filter>
<Filter Include="HTML">
<UniqueIdentifier>{9d0a4350-3844-4736-ba04-7b5b293d7202}</UniqueIdentifier>
<UniqueIdentifier>{16c5b556-454e-4d6d-bf14-9bb319d46775}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Header Files">
<UniqueIdentifier>{8ac00aab-efd2-4041-b8d6-8ae2bebbf170}</UniqueIdentifier>
<UniqueIdentifier>{706b7e24-6dbf-46f0-957e-e6a0f17a6d74}</UniqueIdentifier>
</Filter>
<Filter Include="HTML\Source Files">
<UniqueIdentifier>{05a9b623-bb78-48e3-9400-a0a0c53c0805}</UniqueIdentifier>
<UniqueIdentifier>{4c9f94a5-e181-409c-b7ab-f10724f169a7}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient">
<UniqueIdentifier>{323d6671-9450-46ec-a48b-321d11c885d7}</UniqueIdentifier>
<UniqueIdentifier>{e2c0ea2e-f2e8-44df-9c55-7f5ba8185ffd}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Header Files">
<UniqueIdentifier>{8ad0d983-56fc-49e1-a9da-b1bfccd3b727}</UniqueIdentifier>
<UniqueIdentifier>{27e1c996-f41c-4a5b-9b3f-0fecf23a5cec}</UniqueIdentifier>
</Filter>
<Filter Include="FTPClient\Source Files">
<UniqueIdentifier>{37adb4e7-70bb-4faa-8c57-5fb243d6ad5c}</UniqueIdentifier>
<UniqueIdentifier>{cf178752-55fd-49ef-afa0-c89a65bb37a2}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor">
<UniqueIdentifier>{32b17b88-c2f8-4b67-ab9d-1cd7a4615c37}</UniqueIdentifier>
<UniqueIdentifier>{e50b82d8-f9a0-4188-a69f-bbda286b1e88}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Header Files">
<UniqueIdentifier>{0ae04f74-17ee-4820-814a-f3a0ee2d0bf0}</UniqueIdentifier>
<UniqueIdentifier>{614f75ee-eb6d-4247-bcc9-61acdfd9ec20}</UniqueIdentifier>
</Filter>
<Filter Include="Reactor\Source Files">
<UniqueIdentifier>{58b177ba-e816-40af-9a0c-50f61d488990}</UniqueIdentifier>
<UniqueIdentifier>{b8272de6-103e-4445-9523-62ece15273c4}</UniqueIdentifier>
</Filter>
<Filter Include="Mail">
<UniqueIdentifier>{60010d16-ae04-4391-8493-ee5cf7088e02}</UniqueIdentifier>
<UniqueIdentifier>{59e64683-46ef-4fff-b884-0a3d7fdac2f1}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Header Files">
<UniqueIdentifier>{73977b18-4da5-4aa8-b173-76806dec58d8}</UniqueIdentifier>
<UniqueIdentifier>{4ff9883a-4a78-40eb-864c-668b903c33f9}</UniqueIdentifier>
</Filter>
<Filter Include="Mail\Source Files">
<UniqueIdentifier>{a4971a6e-ebbc-4b4d-aa76-596dad4094ff}</UniqueIdentifier>
<UniqueIdentifier>{9625c8b6-3f32-4311-8d8d-c3a8dd65b3ee}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP">
<UniqueIdentifier>{ae2ef237-a13e-4a63-b293-b3b9d4c3b8fc}</UniqueIdentifier>
<UniqueIdentifier>{757a7f4b-a99c-4941-a678-328002f6f8c2}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Header Files">
<UniqueIdentifier>{7a3df994-da53-4ec9-abdd-dbfacd1b50b2}</UniqueIdentifier>
<UniqueIdentifier>{187d141d-e523-4359-b9f1-24d4a1cf381a}</UniqueIdentifier>
</Filter>
<Filter Include="ICMP\Source Files">
<UniqueIdentifier>{f45d9993-e067-4486-9aaa-6c2efa0d5494}</UniqueIdentifier>
<UniqueIdentifier>{19e9ed87-3965-410a-8d4d-35e2f5a17241}</UniqueIdentifier>
</Filter>
<Filter Include="NTP">
<UniqueIdentifier>{5a758c0b-8661-4b1f-8571-7db0981fbacb}</UniqueIdentifier>
<UniqueIdentifier>{0d61c190-64df-42f1-9c3a-dd48c4b8e733}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Header Files">
<UniqueIdentifier>{90719a77-3c4e-465e-a9e3-71ba8877f090}</UniqueIdentifier>
<UniqueIdentifier>{5322030d-4ae5-45f1-9fdf-9d700d8f1110}</UniqueIdentifier>
</Filter>
<Filter Include="NTP\Source Files">
<UniqueIdentifier>{5480a2ae-3c99-43da-8328-b7c97b809f67}</UniqueIdentifier>
<UniqueIdentifier>{434d080a-05c5-4227-92e3-5cb2bf03fb90}</UniqueIdentifier>
</Filter>
<Filter Include="Logging">
<UniqueIdentifier>{df65186b-ae80-48b5-90e0-417ef741dd76}</UniqueIdentifier>
<UniqueIdentifier>{4b9e7a8f-f7d0-450c-a28b-2976b73ce59f}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Header Files">
<UniqueIdentifier>{710be0b9-197e-4733-af41-c8d137ee396b}</UniqueIdentifier>
<UniqueIdentifier>{8f94d381-4bd6-42f8-be0c-48ba21048dea}</UniqueIdentifier>
</Filter>
<Filter Include="Logging\Source Files">
<UniqueIdentifier>{a08c1cf1-573a-44c8-875c-c71ca92948ee}</UniqueIdentifier>
<UniqueIdentifier>{2e75419c-e353-44aa-a731-59a9be7c323d}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket">
<UniqueIdentifier>{d3c58ac2-0f37-4307-b2a1-b42b7b1663db}</UniqueIdentifier>
<UniqueIdentifier>{b9b97401-ca38-4e1c-a13b-2f88dd212993}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Header Files">
<UniqueIdentifier>{110d889c-a3cf-4c40-b1d7-bb1cddb0e339}</UniqueIdentifier>
<UniqueIdentifier>{6d17abf0-6368-4646-b3d5-580f0c2f2c60}</UniqueIdentifier>
</Filter>
<Filter Include="WebSocket\Source Files">
<UniqueIdentifier>{247dd0dc-eb53-48b3-8638-04181cadba27}</UniqueIdentifier>
<UniqueIdentifier>{8524bf2e-ba28-49bc-b137-b8027e9e766b}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth">
<UniqueIdentifier>{6f0952fe-f142-403d-974a-4f5947399f0c}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Header Files">
<UniqueIdentifier>{f211e86e-a051-4b8d-af46-edcad88bd474}</UniqueIdentifier>
</Filter>
<Filter Include="OAuth\Source Files">
<UniqueIdentifier>{e11a3189-6a08-422d-9dbb-5155d3d67199}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -366,10 +375,13 @@
<ClInclude Include="include\Poco\Net\FTPStreamFactory.h">
<Filter>FTPClient\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketAcceptor.h">
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketAcceptor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\SocketConnector.h">
@ -384,9 +396,6 @@
<ClInclude Include="include\Poco\Net\SocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\ParallelSocketReactor.h">
<Filter>Reactor\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\MailMessage.h">
<Filter>Mail\Header Files</Filter>
</ClInclude>
@ -447,6 +456,12 @@
<ClInclude Include="include\Poco\Net\WebSocketImpl.h">
<Filter>WebSocket\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth10Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
<ClInclude Include="include\Poco\Net\OAuth20Credentials.h">
<Filter>OAuth\Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\DNS.cpp">
@ -740,6 +755,12 @@
<ClCompile Include="src\WebSocketImpl.cpp">
<Filter>WebSocket\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth10Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
<ClCompile Include="src\OAuth20Credentials.cpp">
<Filter>OAuth\Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\DLLVersion.rc" />

View File

@ -778,10 +778,12 @@
Name="Reactor">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketAcceptor.h"/>
<File
RelativePath=".\include\Poco\Net\SocketConnector.h"/>
<File
@ -790,8 +792,6 @@
RelativePath=".\include\Poco\Net\SocketNotifier.h"/>
<File
RelativePath=".\include\Poco\Net\SocketReactor.h"/>
<File
RelativePath=".\include\Poco\Net\ParallelSocketReactor.h"/>
</Filter>
<Filter
Name="Source Files">
@ -928,6 +928,23 @@
RelativePath=".\src\WebSocketImpl.cpp"/>
</Filter>
</Filter>
<Filter
Name="OAuth">
<Filter
Name="Header Files">
<File
RelativePath=".\include\Poco\Net\OAuth10Credentials.h"/>
<File
RelativePath=".\include\Poco\Net\OAuth20Credentials.h"/>
</Filter>
<Filter
Name="Source Files">
<File
RelativePath=".\src\OAuth10Credentials.cpp"/>
<File
RelativePath=".\src\OAuth20Credentials.cpp"/>
</Filter>
</Filter>
<File
RelativePath="..\DLLVersion.rc">
<FileConfiguration

View File

@ -0,0 +1,4 @@
include(CMakeFindDependencyMacro)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR})
find_dependency(PocoFoundation)
include("${CMAKE_CURRENT_LIST_DIR}/PocoNetTargets.cmake")

View File

@ -69,7 +69,7 @@ public:
/// Restricts incoming and outgoing
/// packets to the specified address.
///
/// Cannot be used together with bind().
/// Calls to connect() cannot come before calls to bind().
void bind(const SocketAddress& address, bool reuseAddress = false);
/// Bind a local address to the socket.
@ -80,7 +80,7 @@ public:
/// If reuseAddress is true, sets the SO_REUSEADDR
/// socket option.
///
/// Cannot be used together with connect().
/// Calls to connect cannot() come before calls to bind().
int sendBytes(const void* buffer, int length, int flags = 0);
/// Sends the contents of the given buffer through

View File

@ -46,7 +46,7 @@ public:
explicit HTTPAuthenticationParams(const HTTPRequest& request);
/// See fromRequest() documentation.
explicit HTTPAuthenticationParams(const HTTPResponse& response);
HTTPAuthenticationParams(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE);
/// See fromResponse() documentation.
virtual ~HTTPAuthenticationParams();
@ -68,7 +68,7 @@ public:
/// Throws a InvalidArgumentException if authentication scheme is
/// unknown or invalid.
void fromResponse(const HTTPResponse& response);
void fromResponse(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE);
/// Extracts authentication information from the response and creates
/// HTTPAuthenticationParams by parsing it.
///
@ -91,6 +91,8 @@ public:
/// request or response authentication header.
static const std::string REALM;
static const std::string WWW_AUTHENTICATE;
static const std::string PROXY_AUTHENTICATE;
private:
void parse(std::string::const_iterator first, std::string::const_iterator last);

View File

@ -1,7 +1,7 @@
//
// HTTPClientSession.h
//
// $Id: //poco/1.4/Net/include/Poco/Net/HTTPClientSession.h#5 $
// $Id: //poco/1.4/Net/include/Poco/Net/HTTPClientSession.h#8 $
//
// Library: Net
// Package: HTTPClient
@ -64,6 +64,28 @@ class Net_API HTTPClientSession: public HTTPSession
/// set up a session through a proxy.
{
public:
struct ProxyConfig
/// HTTP proxy server configuration.
{
ProxyConfig():
port(HTTP_PORT)
{
}
std::string host;
/// Proxy server host name or IP address.
Poco::UInt16 port;
/// Proxy server TCP port.
std::string username;
/// Proxy server username.
std::string password;
/// Proxy server password.
std::string nonProxyHosts;
/// A regular expression defining hosts for which the proxy should be bypassed,
/// e.g. "localhost|127\.0\.0\.1|192\.168\.0\.\d+". Can also be an empty
/// string to disable proxy bypassing.
};
HTTPClientSession();
/// Creates an unconnected HTTPClientSession.
@ -78,6 +100,9 @@ public:
HTTPClientSession(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT);
/// Creates a HTTPClientSession using the given host and port.
HTTPClientSession(const std::string& host, Poco::UInt16 port, const ProxyConfig& proxyConfig);
/// Creates a HTTPClientSession using the given host, port and proxy configuration.
virtual ~HTTPClientSession();
/// Destroys the HTTPClientSession and closes
/// the underlying socket.
@ -133,6 +158,25 @@ public:
const std::string& getProxyPassword() const;
/// Returns the password for proxy authentication.
void setProxyConfig(const ProxyConfig& config);
/// Sets the proxy configuration.
const ProxyConfig& getProxyConfig() const;
/// Returns the proxy configuration.
static void setGlobalProxyConfig(const ProxyConfig& config);
/// Sets the global proxy configuration.
///
/// The global proxy configuration is used by all HTTPClientSession
/// instances, unless a different proxy configuration is explicitly set.
///
/// Warning: Setting the global proxy configuration is not thread safe.
/// The global proxy configuration should be set at start up, before
/// the first HTTPClientSession instance is created.
static const ProxyConfig& getGlobalProxyConfig();
/// Returns the global proxy configuration.
void setKeepAliveTimeout(const Poco::Timespan& timeout);
/// Sets the connection timeout for HTTP connections.
@ -198,7 +242,11 @@ public:
virtual bool secure() const;
/// Return true iff the session uses SSL or TLS,
/// or false otherwise.
bool bypassProxy() const;
/// Returns true if the proxy should be bypassed
/// for the current host.
protected:
enum
{
@ -237,10 +285,7 @@ protected:
private:
std::string _host;
Poco::UInt16 _port;
std::string _proxyHost;
Poco::UInt16 _proxyPort;
std::string _proxyUsername;
std::string _proxyPassword;
ProxyConfig _proxyConfig;
Poco::Timespan _keepAliveTimeout;
Poco::Timestamp _lastRequest;
bool _reconnect;
@ -248,6 +293,8 @@ private:
bool _expectResponseBody;
Poco::SharedPtr<std::ostream> _pRequestStream;
Poco::SharedPtr<std::istream> _pResponseStream;
static ProxyConfig _globalProxyConfig;
HTTPClientSession(const HTTPClientSession&);
HTTPClientSession& operator = (const HTTPClientSession&);
@ -273,25 +320,37 @@ inline Poco::UInt16 HTTPClientSession::getPort() const
inline const std::string& HTTPClientSession::getProxyHost() const
{
return _proxyHost;
return _proxyConfig.host;
}
inline Poco::UInt16 HTTPClientSession::getProxyPort() const
{
return _proxyPort;
return _proxyConfig.port;
}
inline const std::string& HTTPClientSession::getProxyUsername() const
{
return _proxyUsername;
return _proxyConfig.username;
}
inline const std::string& HTTPClientSession::getProxyPassword() const
{
return _proxyPassword;
return _proxyConfig.password;
}
inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getProxyConfig() const
{
return _proxyConfig;
}
inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getGlobalProxyConfig()
{
return _globalProxyConfig;
}

View File

@ -52,6 +52,9 @@ public:
~HTTPDigestCredentials();
/// Destroys the HTTPDigestCredentials.
void reset();
/// Resets the HTTPDigestCredentials object to a clean state.
void setUsername(const std::string& username);
/// Sets the username.

View File

@ -90,7 +90,7 @@ public:
/// their pace, this allows finer control over client connections.
///
/// If abortCurrent is false, all current requests are allowed to
/// complete. If abortCurrent is false, the underlying sockets of
/// complete. If abortCurrent is true, the underlying sockets of
/// all client connections are shut down, causing all requests
/// to abort.

Some files were not shown because too many files have changed in this diff Show More