mirror of
				https://github.com/Telecominfraproject/wlan-cloud-lib-poco.git
				synced 2025-10-30 10:12:23 +00:00 
			
		
		
		
	Feature net udp (#2347)
* add PMTU discovery #2329 * add socket gather/scatter capabilities #2330 (win, udp) * enable WSAPoll * add FastMemoryPool * add receiveFrom() with native args * allow copying of StringTokenizer * add AtomicFlag and SpinlockMutex * update .gitignore * UDPServer and client #2343 (windows) * fix warnings * fix warnings * regenerate Net VS solutions * regenerate CppUnit projects/solutions * clang fixes * gcc fixes * try to fix travis * more travis fixes * more travis fixes * handle UDPClient exception * fix makefiles and init order warnings * add UNIX gather/scatter sendto/recvfrom implementations and tests * run travis tests as sudo * try to run tests as sudo, 2nd attempt * fix warning * use mutex in reactor * lock-order-inversion in SocketReactor #2346 * add PMTU discovery #2329 (linux) * ICMPSocket does not check reply address #1921 * remove some ignored tests * add PMTU discovery #2329 (reconcile logic with #1921) * fix native receiveFrome() * reinstate ignoring of proxy errors * add testMTU to ignore list * add include atomic * NTPClient not checking reply address #2348 * some ICMP/MTU fixes * UDPSocketReader cleanup * resolve some socket inheritance warnings * add NTP time sync to ignored tests * SocketNotifier not thread-safe #2345 * prevent x64 samples build attempt for win32 * build TestApp and Library * fix ICMP tests * regen VS projects * regen VS projects and add missing 2012 files * remove debug prints
This commit is contained in:
		 Aleksandar Fabijanic
					Aleksandar Fabijanic
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							da15142f69
						
					
				
				
					commit
					c4e676d36d
				
			
							
								
								
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -142,3 +142,9 @@ cmake-build/ | ||||
| *.bak | ||||
| stage/ | ||||
| releases/ | ||||
|  | ||||
| # Development files # | ||||
| ##################### | ||||
| postgresql/ | ||||
| mysql/ | ||||
|  | ||||
|   | ||||
| @@ -134,13 +134,13 @@ matrix: | ||||
|       compiler: gcc | ||||
|       script: | ||||
|         - ./configure --everything --omit=PDF && make all -s -j2 && sudo make install | ||||
|         - ./travis/runtests.sh | ||||
|         - sudo -s ./travis/runtests.sh | ||||
|      | ||||
|     - env:    TEST_NAME="clang (make)" | ||||
|       compiler: clang | ||||
|       script: | ||||
|         - ./configure --everything --omit=PDF --config=Linux-clang && make all -s -j2  && sudo make install | ||||
|         - ./travis/runtests.sh | ||||
|         - sudo -s ./travis/runtests.sh | ||||
|  | ||||
|     - env:    TEST_NAME="arm-linux-gnueabi- (make)" | ||||
|       script: | ||||
|   | ||||
| @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 10.00 | ||||
| # Visual Studio 2008 | ||||
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Foundation", "Foundation_x64_vs90.vcproj", "{B01196CC-B693-4548-8464-2FF60499E73F}" | ||||
| EndProject | ||||
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{F1EE93DF-347F-4CB3-B191-C4E63F38E972}" | ||||
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}" | ||||
| 	ProjectSection(ProjectDependencies) = postProject | ||||
| 		{B01196CC-B693-4548-8464-2FF60499E73F} = {B01196CC-B693-4548-8464-2FF60499E73F} | ||||
| 	EndProjectSection | ||||
| @@ -35,24 +35,24 @@ Global | ||||
| 		{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 | ||||
| 		{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.Build.0 = release_static_mt|x64 | ||||
| 		{B01196CC-B693-4548-8464-2FF60499E73F}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_shared|x64.ActiveCfg = debug_shared|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_shared|x64.Build.0 = debug_shared|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_shared|x64.Deploy.0 = debug_shared|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_md|x64.Build.0 = debug_static_md|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_shared|x64.ActiveCfg = release_shared|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_shared|x64.Build.0 = release_shared|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_shared|x64.Deploy.0 = release_shared|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_md|x64.ActiveCfg = release_static_md|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_md|x64.Build.0 = release_static_md|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_md|x64.Deploy.0 = release_static_md|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_mt|x64.Build.0 = release_static_mt|x64 | ||||
| 		{F1EE93DF-347F-4CB3-B191-C4E63F38E972}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_shared|x64.ActiveCfg = debug_shared|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_shared|x64.Build.0 = debug_shared|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_shared|x64.Deploy.0 = debug_shared|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_md|x64.Build.0 = debug_static_md|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_shared|x64.ActiveCfg = release_shared|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_shared|x64.Build.0 = release_shared|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_shared|x64.Deploy.0 = release_shared|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_md|x64.ActiveCfg = release_static_md|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_md|x64.Build.0 = release_static_md|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_md|x64.Deploy.0 = release_static_md|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_mt|x64.Build.0 = release_static_mt|x64 | ||||
| 		{C812E0B9-69A9-4FA1-A1D4-161CF677BD10}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
|   | ||||
							
								
								
									
										125
									
								
								Foundation/include/Poco/AtomicFlag.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								Foundation/include/Poco/AtomicFlag.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,125 @@ | ||||
| // | ||||
| // AtomicFlag.h | ||||
| // | ||||
| // Library: Foundation | ||||
| // Package: Core | ||||
| // Module:  AtomicFlag | ||||
| // | ||||
| // Definition of the AtomicFlag class. | ||||
| // | ||||
| // Copyright (c) 2009, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifdef POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
|  | ||||
| #ifndef Foundation_AtomicFlag_INCLUDED | ||||
| #define Foundation_AtomicFlag_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Foundation.h" | ||||
| #include <atomic> | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
|  | ||||
|  | ||||
| class Foundation_API AtomicFlag | ||||
| 	/// This class implements an atomic boolean flag by wrapping | ||||
| 	/// the std::atomic_flag. It is guaranteed to be thread-safe | ||||
| 	/// and lock-free. | ||||
| 	/// | ||||
| 	/// Only default-construction is allowed, objects of this | ||||
| 	/// class are not copyable, assignable or movable. | ||||
| 	/// | ||||
| 	/// Note that this class is not a replacement for (atomic) | ||||
| 	/// bool type because its value can not be read without also | ||||
| 	/// being set to true. However, after being set (either | ||||
| 	/// explicitly, through the set() call or implicitly, via | ||||
| 	/// operator bool()), it can be reset and reused. | ||||
| 	/// | ||||
| 	/// The class is useful in scenarios such as busy-wait or | ||||
| 	/// one-off code blocks, e.g.: | ||||
| 	/// | ||||
| 	/// class MyClass | ||||
| 	/// { | ||||
| 	/// public: | ||||
| 	///     void myFunc() | ||||
| 	///     { | ||||
| 	///         if (!_beenHere) doOnce(); | ||||
| 	///         doMany(); | ||||
| 	///     } | ||||
| 	/// | ||||
| 	///     void doOnce() { /* executed once */ } | ||||
| 	/// | ||||
| 	///     void doMany() { /* executed multiple times */ } | ||||
| 	/// | ||||
| 	/// private: | ||||
| 	///     AtomicFlag _beenHere; | ||||
| 	/// } | ||||
| 	/// | ||||
| 	/// MyClass myClass; | ||||
| 	/// int i = 0; | ||||
| 	/// while (++i < 10) myClass.myFunc(); | ||||
| { | ||||
| public: | ||||
| 	AtomicFlag(); | ||||
| 		/// Creates AtomicFlag. | ||||
|  | ||||
| 	~AtomicFlag(); | ||||
| 		/// Destroys AtomicFlag. | ||||
|  | ||||
| 	bool set(); | ||||
| 		/// Sets the flag to true and returns previously | ||||
| 		/// held value. | ||||
|  | ||||
| 	void reset(); | ||||
| 		/// Resets the flag to false. | ||||
|  | ||||
| 	operator bool (); | ||||
| 		/// Sets the flag to true and returns previously | ||||
| 		/// held value. | ||||
|  | ||||
| private: | ||||
| 	AtomicFlag(const AtomicFlag&) = delete; | ||||
| 	AtomicFlag& operator = (const AtomicFlag&) = delete; | ||||
| 	AtomicFlag(AtomicFlag&&) = delete; | ||||
| 	AtomicFlag& operator = (AtomicFlag&&) = delete; | ||||
|  | ||||
| 	std::atomic_flag _flag = ATOMIC_FLAG_INIT; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // | ||||
| // inlines | ||||
| // | ||||
|  | ||||
| inline bool AtomicFlag::set() | ||||
| { | ||||
| 	return _flag.test_and_set(std::memory_order_acquire); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline void AtomicFlag::reset() | ||||
| { | ||||
| 	_flag.clear(std::memory_order_release); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline AtomicFlag::operator bool () | ||||
| { | ||||
| 	return set(); | ||||
| } | ||||
|  | ||||
|  | ||||
| } // namespace Poco | ||||
|  | ||||
|  | ||||
| #endif // Foundation_AtomicFlag_INCLUDED | ||||
|  | ||||
|  | ||||
| #endif // POCO_HAVE_STD_ATOMICS | ||||
| @@ -19,6 +19,7 @@ | ||||
|  | ||||
|  | ||||
| #include "Poco/Foundation.h" | ||||
| #include "Poco/AtomicCounter.h" | ||||
| #include "Poco/Mutex.h" | ||||
| #include <vector> | ||||
| #include <cstddef> | ||||
| @@ -88,6 +89,298 @@ private: | ||||
| }; | ||||
|  | ||||
|  | ||||
| // | ||||
| // FastMemoryPool | ||||
| // | ||||
|  | ||||
| // Macro defining the default initial size of any | ||||
| // FastMemoryPool; can be overriden by specifying | ||||
| // FastMemoryPool pre-alloc at runtime. | ||||
| #define POCO_FAST_MEMORY_POOL_PREALLOC 1000 | ||||
|  | ||||
|  | ||||
| template <typename T, typename M = FastMutex> | ||||
| class FastMemoryPool | ||||
| 	/// FastMemoryPool is a class for pooling fixed-size blocks of memory. | ||||
| 	/// | ||||
| 	/// The main purpose of this class is to speed-up memory allocations, | ||||
| 	/// as well as to reduce memory fragmentation in situations where the | ||||
| 	/// same blocks are allocated all over again, such as in server | ||||
| 	/// applications. It differs from the MemoryPool in the way the block | ||||
| 	/// size is determined - it is inferred form the held type size and | ||||
| 	/// applied statically. It is also, as its name implies, faster than | ||||
| 	/// Poco::MemoryPool. It is likely to be significantly faster than | ||||
| 	/// the runtime platform generic memory allocation functionality | ||||
| 	/// as well, but it has certain limitations (aside from only giving | ||||
| 	/// blocks of fixed size) - see more below. | ||||
| 	/// | ||||
| 	/// An object using memory from the pool should be created using | ||||
| 	/// in-place new operator; once released back to the pool, its | ||||
| 	/// destructor will be called by the pool. The returned pointer | ||||
| 	/// must be a valid pointer to the type for which it was obtained. | ||||
| 	/// | ||||
| 	/// Example use: | ||||
| 	/// | ||||
| 	///   using std::vector; | ||||
| 	///   using std:string; | ||||
| 	///   using std::to_string; | ||||
| 	///   using Poco::FastMemoryPool; | ||||
| 	/// | ||||
| 	///   int blocks = 10; | ||||
| 	///   FastMemoryPool<int> fastIntPool(blocks); | ||||
| 	///   FastMemoryPool<string> fastStringPool(blocks); | ||||
| 	/// | ||||
| 	///   vector<int*> intVec(blocks, 0); | ||||
| 	///   vector<string*> strVec(blocks); | ||||
| 	/// | ||||
| 	///   for (int i = 0; i < blocks; ++i) | ||||
| 	///   { | ||||
| 	///     intVec[i] = new (fastIntPool.get()) int(i); | ||||
| 	///     strVec[i] = new (fastStringPool.get()) string(to_string(i)); | ||||
| 	///   } | ||||
| 	/// | ||||
| 	///   for (int i = 0; i < blocks; ++i) | ||||
| 	///   { | ||||
| 	///     fastIntPool.release(intVec[i]); | ||||
| 	///     fastStringPool.release(strVec[i]); | ||||
| 	///   } | ||||
| 	/// | ||||
| 	/// Pool keeps memory blocks in "buckets". A bucket is an array of | ||||
| 	/// blocks; it is always allocated with a single `new[]`, and its blocks | ||||
| 	/// are initialized at creation time. Whenever the current capacity | ||||
| 	/// of the pool is reached, a new bucket is allocated and its blocks | ||||
| 	/// initialized for internal use. If the new bucket allocation would | ||||
| 	/// exceed allowed maximum size, std::bad_alloc() exception is thrown, | ||||
| 	/// with object itself left intact. | ||||
| 	/// | ||||
| 	/// Pool internally keeps track of available blocks through a linked-list | ||||
| 	/// and utilizes unused memory blocks for that purpose. This means that, | ||||
| 	/// for types smaller than pointer the size of a block will be greater | ||||
| 	/// than the size of the type. The implications are following: | ||||
| 	/// | ||||
| 	///   - FastMemoryPool can not be used for arrays of types smaller | ||||
| 	///     than pointer | ||||
| 	/// | ||||
| 	///   - if FastMemoryPool is used to store variable-size arrays, it | ||||
| 	///     must not have multiple buckets; the way to achieve this is by | ||||
| 	///     specifying proper argument values at construction. | ||||
| 	/// | ||||
| 	/// Neither of the above are primarily intended or recommended modes | ||||
| 	/// of use. It is recommended to use a FastMemoryPool for creation of | ||||
| 	/// many objects of the same type. Furthermore, it is perfectly fine | ||||
| 	/// to have arrays or STL containers of pointers to objects created | ||||
| 	/// in blocks of memory obtained from the FastMemoryPool. | ||||
| 	/// | ||||
| 	/// Before a block is given to the user, it is removed from the list; | ||||
| 	/// when a block is returned to the pool, it is re-inserted in the | ||||
| 	/// list. Pool will return held memory to the system at destruction, | ||||
| 	/// and will not leak memory after destruction; this means that after | ||||
| 	/// pool destruction, any memory that was taken, but not returned to | ||||
| 	/// it becomes invalid. | ||||
| 	/// | ||||
| 	/// FastMemoryPool is thread safe; it uses Poco::FastMutex by | ||||
| 	/// default, but other mutexes can be specified through the template | ||||
| 	/// parameter, if needed. Poco::NullMutex can be specified as template | ||||
| 	/// parameter to avoid locking and improve speed in single-threaded | ||||
| 	/// scenarios. | ||||
| { | ||||
| private: | ||||
| 	class Block | ||||
| 		/// A block of memory. This class represents a memory | ||||
| 		/// block. It has dual use, the primary one being | ||||
| 		/// obvious - memory provided to the user of the pool. | ||||
| 		/// The secondary use is for internal "housekeeping" | ||||
| 		/// purposes. | ||||
| 		/// | ||||
| 		/// It works like this: | ||||
| 		/// | ||||
| 		///    - when initially created, a Block is properly | ||||
| 		///      constructed and positioned into the internal | ||||
| 		///      linked list of blocks | ||||
| 		/// | ||||
| 		///    - when given to the user, the Block is removed | ||||
| 		///      from the internal linked list of blocks | ||||
| 		/// | ||||
| 		///    - when returned back to the pool, the Block | ||||
| 		///      is again in-place constructed and inserted | ||||
| 		///      as next available block in the linked list | ||||
| 		///      of blocks | ||||
| 	{ | ||||
| 	public: | ||||
|  | ||||
| 		Block() | ||||
| 			/// Creates a Block and sets its next pointer. | ||||
| 			/// This constructor should ony be used to initialize | ||||
| 			/// a block sequence (an array of blocks) in a newly | ||||
| 			/// allocated bucket. | ||||
| 			/// | ||||
| 			/// After the construction, the last block's `next` | ||||
| 			/// pointer points outside the allocated memory and | ||||
| 			/// must be set to zero. This design improves performance, | ||||
| 			/// because otherwise the block array would require an | ||||
| 			/// initialization loop after the allocation. | ||||
| 		{ | ||||
| 			_memory.next = this + 1; | ||||
| 		} | ||||
|  | ||||
| 		explicit Block(Block* next) | ||||
| 			/// Creates a Block and sets its next pointer. | ||||
| 		{ | ||||
| 			_memory.next = next; | ||||
| 		} | ||||
|  | ||||
| 		union | ||||
| 			/// Memory block storage. | ||||
| 			/// | ||||
| 			/// Note that this storage is properly aligned | ||||
| 			/// for the datatypes it holds. It will not work | ||||
| 			/// for arrays of types smaller than pointer size. | ||||
| 			/// Furthermore, the pool  itself will not work for | ||||
| 			/// a variable-size array of any type after it is | ||||
| 			/// resized. | ||||
| 		{ | ||||
| 			char buffer[sizeof(T)]; | ||||
| 			Block* next; | ||||
| 		} _memory; | ||||
|  | ||||
| 	private: | ||||
| 		Block(const Block&); | ||||
| 		Block& operator = (const Block&); | ||||
| 	}; | ||||
|  | ||||
| public: | ||||
| 	typedef M MutexType; | ||||
| 	typedef typename M::ScopedLock ScopedLock; | ||||
|  | ||||
| 	typedef Block* Bucket; | ||||
| 	typedef std::vector<Bucket> BucketVec; | ||||
|  | ||||
| 	FastMemoryPool(std::size_t blocksPerBucket = POCO_FAST_MEMORY_POOL_PREALLOC, std::size_t bucketPreAlloc = 10, std::size_t maxAlloc = 0): | ||||
| 			_blocksPerBucket(blocksPerBucket), | ||||
| 			_maxAlloc(maxAlloc), | ||||
| 			_available(0) | ||||
| 		/// Creates the FastMemoryPool. | ||||
| 		/// | ||||
| 		/// The size of a block is inferred from the type size. Number of blocks | ||||
| 		/// per bucket, pre-allocated bucket pointer storage and maximum allowed | ||||
| 		/// total size of the pool can be customized by overriding default | ||||
| 		/// parameter value: | ||||
| 		/// | ||||
| 		///   - blocksPerBucket specifies how many blocks each bucket contains | ||||
| 		///                     defaults to POCO_FAST_MEMORY_POOL_PREALLOC | ||||
| 		/// | ||||
| 		///   - bucketPreAlloc specifies how much space for bucket pointers | ||||
| 		///                    (buckets themselves are not pre-allocated) will | ||||
| 		///                    be pre-alocated. | ||||
| 		/// | ||||
| 		///   - maxAlloc specifies maximum allowed total pool size in bytes. | ||||
| 	{ | ||||
| 		if (_blocksPerBucket < 2) | ||||
| 			throw std::invalid_argument("FastMemoryPool: blocksPerBucket must be >=2"); | ||||
| 		_buckets.reserve(bucketPreAlloc); | ||||
| 		resize(); | ||||
| 	} | ||||
|  | ||||
| 	~FastMemoryPool() | ||||
| 		/// Destroys the FastMemoryPool and releases all memory. | ||||
| 		/// Any memory taken from, but not returned to, the pool | ||||
| 		/// becomes invalid. | ||||
| 	{ | ||||
| 		clear(); | ||||
| 	} | ||||
|  | ||||
| 	void* get() | ||||
| 		/// Returns pointer to the next available | ||||
| 		/// memory block. If the pool is exhausted, | ||||
| 		/// it will be resized by allocating a new | ||||
| 		/// bucket. | ||||
| 	{ | ||||
| 		Block* ret; | ||||
| 		{ | ||||
| 			ScopedLock l(_mutex); | ||||
| 			if(_firstBlock == 0) resize(); | ||||
| 			ret = _firstBlock; | ||||
| 			_firstBlock = _firstBlock->_memory.next; | ||||
| 		} | ||||
| 		--_available; | ||||
| 		return ret; | ||||
| 	} | ||||
|  | ||||
| 	template <typename P> | ||||
| 	void release(P* ptr) | ||||
| 		/// Recycles the released memory by initializing it for | ||||
| 		/// internal use and setting it as next available block; | ||||
| 		/// previously next block becomes this block's next. | ||||
| 		/// Releasing of null pointers is silently ignored. | ||||
| 		/// Destructor is called for the returned pointer. | ||||
| 	{ | ||||
| 		if (!ptr) return; | ||||
| 		reinterpret_cast<P*>(ptr)->~P(); | ||||
| 		++_available; | ||||
| 		ScopedLock l(_mutex); | ||||
| 		_firstBlock = new (ptr) Block(_firstBlock); | ||||
| 	} | ||||
|  | ||||
| 	std::size_t blockSize() const | ||||
| 		/// Returns the block size in bytes. | ||||
| 	{ | ||||
| 		return sizeof(Block); | ||||
| 	} | ||||
|  | ||||
| 	std::size_t allocated() const | ||||
| 		/// Returns the total amount of memory allocated, in bytes. | ||||
| 	{ | ||||
| 		return _buckets.size() * _blocksPerBucket; | ||||
| 	} | ||||
|  | ||||
| 	std::size_t available() const | ||||
| 		/// Returns currently available amount of memory in bytes. | ||||
| 	{ | ||||
| 		return _available; | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	FastMemoryPool(const FastMemoryPool&); | ||||
| 	FastMemoryPool& operator = (const FastMemoryPool&); | ||||
|  | ||||
| 	void resize() | ||||
| 		/// Creates new bucket and initializes it for internal use. | ||||
| 		/// Sets the previously next block to point to the new bucket's | ||||
| 		/// first block and the new bucket's last block becomes the | ||||
| 		/// last block. | ||||
| 	{ | ||||
| 		if (_buckets.size() == _buckets.capacity()) | ||||
| 		{ | ||||
| 			std::size_t newSize = _buckets.capacity() * 2; | ||||
| 			if (_maxAlloc != 0 && newSize > _maxAlloc) throw std::bad_alloc(); | ||||
| 			_buckets.reserve(newSize); | ||||
| 		} | ||||
| 		_buckets.push_back(new Block[_blocksPerBucket]); | ||||
| 		_firstBlock = _buckets.back(); | ||||
| 		// terminate last block | ||||
| 		_firstBlock[_blocksPerBucket-1]._memory.next = 0; | ||||
| 		_available = _available.value() + static_cast<AtomicCounter::ValueType>(_blocksPerBucket); | ||||
| 	} | ||||
|  | ||||
| 	void clear() | ||||
| 	{ | ||||
| 		typename BucketVec::iterator it = _buckets.begin(); | ||||
| 		typename BucketVec::iterator end = _buckets.end(); | ||||
| 		for (; it != end; ++it) delete[] *it; | ||||
| 	} | ||||
|  | ||||
| 	typedef Poco::AtomicCounter Counter; | ||||
|  | ||||
| 	const | ||||
| 	std::size_t _blocksPerBucket; | ||||
| 	BucketVec   _buckets; | ||||
| 	Block*      _firstBlock; | ||||
| 	std::size_t _maxAlloc; | ||||
| 	Counter     _available; | ||||
| 	mutable M   _mutex; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // | ||||
| // inlines | ||||
| // | ||||
|   | ||||
| @@ -21,6 +21,17 @@ | ||||
| #include "Poco/Foundation.h" | ||||
| #include "Poco/Exception.h" | ||||
| #include "Poco/ScopedLock.h" | ||||
| #include "Poco/Timestamp.h" | ||||
|  | ||||
| #if __cplusplus >= 201103L | ||||
| 	#ifndef POCO_HAVE_STD_ATOMICS | ||||
| 		#define POCO_HAVE_STD_ATOMICS | ||||
| 	#endif | ||||
| #endif | ||||
|  | ||||
| #ifdef POCO_HAVE_STD_ATOMICS | ||||
| 	#include <atomic> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| @@ -150,6 +161,58 @@ private: | ||||
| }; | ||||
|  | ||||
|  | ||||
| #ifdef POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
| class Foundation_API SpinlockMutex | ||||
| 	/// A SpinlockMutex, implemented in terms of std::atomic_flag, as | ||||
| 	/// busy-wait mutual exclusion. | ||||
| 	/// | ||||
| 	/// While in some cases (eg. locking small blocks of code) | ||||
| 	/// busy-waiting may be an optimal solution, in many scenarios | ||||
| 	/// spinlock may not be the right choice - it is up to the user to | ||||
| 	/// choose the proper mutex type for their particular case. | ||||
| 	/// | ||||
| 	/// Works with the ScopedLock class. | ||||
| { | ||||
| public: | ||||
| 	typedef Poco::ScopedLock<SpinlockMutex> ScopedLock; | ||||
|  | ||||
| 	SpinlockMutex(); | ||||
| 		/// Creates the SpinlockMutex. | ||||
|  | ||||
| 	~SpinlockMutex(); | ||||
| 		/// Destroys the SpinlockMutex. | ||||
|  | ||||
| 	void lock(); | ||||
| 		/// Locks the mutex. Blocks if the mutex | ||||
| 		/// is held by another thread. | ||||
|  | ||||
| 	void lock(long milliseconds); | ||||
| 		/// Locks the mutex. Blocks up to the given number of milliseconds | ||||
| 		/// if the mutex is held by another thread. Throws a TimeoutException | ||||
| 		/// if the mutex can not be locked within the given timeout. | ||||
|  | ||||
| 	bool tryLock(); | ||||
| 		/// Tries to lock the mutex. Returns immediately, false | ||||
| 		/// if the mutex is already held by another thread, true | ||||
| 		/// if the mutex was successfully locked. | ||||
|  | ||||
| 	bool tryLock(long milliseconds); | ||||
| 		/// Locks the mutex. Blocks up to the given number of milliseconds | ||||
| 		/// if the mutex is held by another thread. | ||||
| 		/// Returns true if the mutex was successfully locked. | ||||
|  | ||||
| 	void unlock(); | ||||
| 		/// Unlocks the mutex so that it can be acquired by | ||||
| 		/// other threads. | ||||
|  | ||||
| private: | ||||
| 	std::atomic_flag _flag = ATOMIC_FLAG_INIT; | ||||
| }; | ||||
|  | ||||
| #endif // POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
|  | ||||
| class Foundation_API NullMutex | ||||
| 	/// A NullMutex is an empty mutex implementation | ||||
| 	/// which performs no locking at all. Useful in policy driven design | ||||
| @@ -202,6 +265,11 @@ public: | ||||
| // | ||||
| // inlines | ||||
| // | ||||
|  | ||||
| // | ||||
| // Mutex | ||||
| // | ||||
|  | ||||
| inline void Mutex::lock() | ||||
| { | ||||
| 	lockImpl(); | ||||
| @@ -233,6 +301,10 @@ inline void Mutex::unlock() | ||||
| } | ||||
|  | ||||
|  | ||||
| // | ||||
| // FastMutex | ||||
| // | ||||
|  | ||||
| inline void FastMutex::lock() | ||||
| { | ||||
| 	lockImpl(); | ||||
| @@ -264,6 +336,55 @@ inline void FastMutex::unlock() | ||||
| } | ||||
|  | ||||
|  | ||||
| #ifdef POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
| // | ||||
| // SpinlockMutex | ||||
| // | ||||
|  | ||||
| inline void SpinlockMutex::lock() | ||||
| { | ||||
| 	while (_flag.test_and_set(std::memory_order_acquire)); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline void SpinlockMutex::lock(long milliseconds) | ||||
| { | ||||
| 	Timestamp now; | ||||
| 	Timestamp::TimeDiff diff(Timestamp::TimeDiff(milliseconds)*1000); | ||||
| 	while (_flag.test_and_set(std::memory_order_acquire)) | ||||
| 	{ | ||||
| 		if (now.isElapsed(diff)) throw TimeoutException(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| inline bool SpinlockMutex::tryLock() | ||||
| { | ||||
| 	return !_flag.test_and_set(std::memory_order_acquire); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline bool SpinlockMutex::tryLock(long milliseconds) | ||||
| { | ||||
| 	Timestamp now; | ||||
| 	Timestamp::TimeDiff diff(Timestamp::TimeDiff(milliseconds)*1000); | ||||
| 	while (_flag.test_and_set(std::memory_order_acquire)) | ||||
| 	{ | ||||
| 		if (now.isElapsed(diff)) return false; | ||||
| 	} | ||||
| 	return true; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline void SpinlockMutex::unlock() | ||||
| { | ||||
| 	_flag.clear(std::memory_order_release); | ||||
| } | ||||
|  | ||||
| #endif // POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
|  | ||||
| } // namespace Poco | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -36,7 +36,7 @@ public: | ||||
| 	enum Options | ||||
| 	{ | ||||
| 		TOK_IGNORE_EMPTY = 1, /// ignore empty tokens | ||||
| 		TOK_TRIM	 = 2  /// remove leading and trailing whitespace from tokens | ||||
| 		TOK_TRIM         = 2  /// remove leading and trailing whitespace from tokens | ||||
| 	}; | ||||
| 	 | ||||
| 	typedef std::vector<std::string> TokenVec; | ||||
| @@ -83,9 +83,6 @@ public: | ||||
| 		/// Returns the number of tokens equal to the specified token. | ||||
|  | ||||
| private: | ||||
| 	StringTokenizer(const StringTokenizer&); | ||||
| 	StringTokenizer& operator = (const StringTokenizer&); | ||||
| 	 | ||||
| 	void trim(std::string& token); | ||||
|  | ||||
| 	TokenVec _tokens; | ||||
|   | ||||
							
								
								
									
										37
									
								
								Foundation/src/AtomicFlag.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Foundation/src/AtomicFlag.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| // | ||||
| // AtomicCounter.cpp | ||||
| // | ||||
| // Library: Foundation | ||||
| // Package: Core | ||||
| // Module:  AtomicCounter | ||||
| // | ||||
| // Copyright (c) 2009, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #if defined(POCO_HAVE_STD_ATOMICS) | ||||
|  | ||||
|  | ||||
| #include "Poco/AtomicCounter.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
|  | ||||
|  | ||||
| AtomicFlag::AtomicFlag() | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| AtomicFlag::~AtomicFlag() | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| } // namespace Poco | ||||
|  | ||||
|  | ||||
| #endif // POCO_HAVE_STD_ATOMICS | ||||
| @@ -51,4 +51,18 @@ FastMutex::~FastMutex() | ||||
| } | ||||
|  | ||||
|  | ||||
| #ifdef POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
| SpinlockMutex::SpinlockMutex() | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| SpinlockMutex::~SpinlockMutex() | ||||
| { | ||||
| } | ||||
|  | ||||
| #endif // POCO_HAVE_STD_ATOMICS | ||||
|  | ||||
|  | ||||
| } // namespace Poco | ||||
|   | ||||
| @@ -12,10 +12,15 @@ | ||||
| #include "CppUnit/TestCaller.h" | ||||
| #include "CppUnit/TestSuite.h" | ||||
| #include "Poco/MemoryPool.h" | ||||
| #include "Poco/NumberFormatter.h" | ||||
| #include "Poco/Stopwatch.h" | ||||
| #include <vector> | ||||
| #include <cstring> | ||||
| #include <iostream> | ||||
|  | ||||
|  | ||||
| using Poco::MemoryPool; | ||||
| using Poco::NumberFormatter; | ||||
|  | ||||
|  | ||||
| MemoryPoolTest::MemoryPoolTest(const std::string& name): CppUnit::TestCase(name) | ||||
| @@ -68,6 +73,221 @@ void MemoryPoolTest::testMemoryPool() | ||||
| } | ||||
|  | ||||
|  | ||||
| namespace | ||||
| { | ||||
|  | ||||
| template<typename T> | ||||
| bool fastMemPoolTest(int n) | ||||
| { | ||||
| 	bool ret = true; | ||||
| 	std::vector<T*> vec(n, (T*)0); | ||||
| 	Poco::FastMemoryPool<T> pool(sizeof(T*), vec.size()/2); | ||||
| 	for (int i = 0; i < vec.size(); ++i) | ||||
| 	{ | ||||
| 		vec[i] = new (pool.get()) T(i); | ||||
| 	} | ||||
|  | ||||
| 	for (int i = 0; i < vec.size(); ++i) | ||||
| 	{ | ||||
| 		ret = ret && (vec[i] && *vec[i] == i); | ||||
| 	} | ||||
|  | ||||
| 	for (int i = 0; i < vec.size(); ++i) | ||||
| 	{ | ||||
| 		pool.release(vec[i]); | ||||
| 	} | ||||
|  | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
| template <typename T> | ||||
| bool fastMemPoolTestCustom(int n, const T& val) | ||||
| { | ||||
| 	bool ret = true; | ||||
| 	std::vector<T*> vec(n, (T*)0); | ||||
| 	Poco::FastMemoryPool<T> pool(sizeof(T*), vec.size()/2); | ||||
| 	for (int i = 0; i < vec.size(); ++i) | ||||
| 	{ | ||||
| 		vec[i] = new (pool.get()) T(val); | ||||
| 	} | ||||
|  | ||||
| 	for (int i = 0; i < vec.size(); ++i) | ||||
| 	{ | ||||
| 		ret = ret && (vec[i] && *vec[i] == val); | ||||
| 	} | ||||
|  | ||||
| 	for (int i = 0; i < vec.size(); ++i) | ||||
| 	{ | ||||
| 		pool.release(vec[i]); | ||||
| 	} | ||||
|  | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
| struct Custom | ||||
| { | ||||
| 	Custom(): i(42), s("abc") {} | ||||
| 	virtual ~Custom() {} | ||||
| 	bool operator ==(const Custom& other) const | ||||
| 	{ | ||||
| 		return i == other.i && s == other.s; | ||||
| 	} | ||||
| 	int i; | ||||
| 	std::string s; | ||||
| }; | ||||
|  | ||||
| struct CustomChild1: virtual public Custom | ||||
| { | ||||
| 	CustomChild1(): j(0) {} | ||||
| 	bool operator ==(const CustomChild1& other) const | ||||
| 	{ | ||||
| 		return i == other.i && s == other.s && j == other.j; | ||||
| 	} | ||||
| 	int j; | ||||
| }; | ||||
|  | ||||
| struct CustomChild2: virtual public Custom | ||||
| { | ||||
| 	CustomChild2(): k(0) {} | ||||
| 	bool operator ==(const CustomChild2& other) const | ||||
| 	{ | ||||
| 		return i == other.i && s == other.s && k == other.k; | ||||
| 	} | ||||
| 	int k; | ||||
| }; | ||||
|  | ||||
| struct CustomGrandChild: public CustomChild1, CustomChild2 | ||||
| { | ||||
| 	CustomGrandChild(): l(0) {} | ||||
| 	bool operator ==(const CustomGrandChild& other) const | ||||
| 	{ | ||||
| 		return i == other.i && s == other.s && | ||||
| 				j == other.j && k == other.k && l == other.l; | ||||
| 	} | ||||
| 	int l; | ||||
| }; | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| void MemoryPoolTest::testFastMemoryPool() | ||||
| { | ||||
| 	int blocks = 10; | ||||
|  | ||||
| 	Poco::FastMemoryPool<int> fastIntPool(blocks); | ||||
| 	Poco::FastMemoryPool<std::string> fastStringPool(blocks); | ||||
|  | ||||
| 	std::vector<int*> intVec(blocks, (int*)0); | ||||
| 	std::vector<std::string*> strVec(blocks); | ||||
|  | ||||
| 	for (int i = 0; i < blocks; ++i) | ||||
| 	{ | ||||
| 		intVec[i] = new (fastIntPool.get()) int(i); | ||||
| 		strVec[i] = new (fastStringPool.get()) std::string(NumberFormatter::format(i)); | ||||
| 	} | ||||
|  | ||||
| 	for (int i = 0; i < blocks; ++i) | ||||
| 	{ | ||||
| 		assertTrue (intVec[i] && *intVec[i] == i); | ||||
| 		assertTrue (strVec[i] && *strVec[i] == NumberFormatter::format(i)); | ||||
| 	} | ||||
|  | ||||
| 	for (int i = 0; i < blocks; ++i) | ||||
| 	{ | ||||
| 		fastIntPool.release(intVec[i]); | ||||
| 		fastStringPool.release(strVec[i]); | ||||
| 	} | ||||
|  | ||||
| 	int sz = 5; | ||||
| 	assertTrue (fastMemPoolTest<char>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<signed char>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<unsigned char>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<short>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<unsigned short>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<int>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<unsigned int>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<long>(sz)); | ||||
| 	assertTrue (fastMemPoolTest<unsigned long>(sz)); | ||||
|  | ||||
| 	std::string str = "123abc"; | ||||
| 	assertTrue (fastMemPoolTestCustom(sz, str)); | ||||
|  | ||||
| 	Custom c; | ||||
| 	assertTrue (fastMemPoolTestCustom(sz, c)); | ||||
|  | ||||
| 	CustomChild1 c1; | ||||
| 	assertTrue (fastMemPoolTestCustom(sz, c1)); | ||||
|  | ||||
| 	CustomChild2 c2; | ||||
| 	assertTrue (fastMemPoolTestCustom(sz, c2)); | ||||
|  | ||||
| 	CustomGrandChild gc; | ||||
| 	assertTrue (fastMemPoolTestCustom(sz, gc)); | ||||
|  | ||||
| 	const int elements = 16; | ||||
| 	Poco::FastMemoryPool<char[elements]> fastArrayPool(blocks); | ||||
| 	char* pC = reinterpret_cast<char*>(fastArrayPool.get()); | ||||
| 	const char* pStr = "1234567890abcde"; | ||||
| 	std::memcpy(pC, pStr, elements); | ||||
| 	assert (strlen(pC) == elements - 1); | ||||
| 	assert (std::strcmp(pC, pStr) == 0); | ||||
| 	fastArrayPool.release(pC); | ||||
| } | ||||
|  | ||||
|  | ||||
| void MemoryPoolTest::memoryPoolBenchmark() | ||||
| { | ||||
| 	Poco::Stopwatch sw; | ||||
|  | ||||
| 	int reps = 1000000; | ||||
| 	std::vector<int*> iVec(reps, (int*)0); | ||||
| 	Poco::FastMemoryPool<int> fastPool(reps); | ||||
| 	sw.restart(); | ||||
| 	for (int i = 0; i < reps; ++i) | ||||
| 	{ | ||||
| 		iVec[i] = new (fastPool.get()) int(i); | ||||
| 	} | ||||
| 	sw.stop(); | ||||
| 	std::cout << '\n' << reps << "x\n"; | ||||
| 	std::cout << "get()\t\tFastMemoryPool=" << sw.elapsed() / 1000 << std::endl; | ||||
|  | ||||
| 	for (int i = 0; i < reps; ++i) | ||||
| 	{ | ||||
| 		assertTrue(*iVec[i] == i); | ||||
| 	} | ||||
|  | ||||
| 	sw.restart(); | ||||
| 	for (int i = 0; i < reps; ++i) | ||||
| 	{ | ||||
| 		fastPool.release(iVec[i]); | ||||
| 	} | ||||
| 	sw.stop(); | ||||
| 	std::cout << "release()\tFastMemoryPool=" << sw.elapsed() / 1000 << std::endl; | ||||
|  | ||||
| 	MemoryPool pool(sizeof(int*), reps); | ||||
| 	sw.start(); | ||||
| 	for (int i = 0; i < reps; ++i) | ||||
| 	{ | ||||
| 		iVec[i] = new (pool.get()) int(i); | ||||
| 	} | ||||
| 	sw.stop(); | ||||
| 	std::cout << "get()\t\tMemoryPool=" << sw.elapsed() / 1000 << std::endl; | ||||
|  | ||||
| 	for (int i = 0; i < reps; ++i) | ||||
| 	{ | ||||
| 		assertTrue(iVec[i] && *iVec[i] == i); | ||||
| 	} | ||||
|  | ||||
| 	sw.restart(); | ||||
| 	for (int i = 0; i < reps; ++i) | ||||
| 	{ | ||||
| 		pool.release(iVec[i]); | ||||
| 	} | ||||
| 	sw.stop(); | ||||
| 	std::cout << "release()\tMemoryPool=" << sw.elapsed() / 1000 << std::endl; | ||||
| } | ||||
|  | ||||
|  | ||||
| void MemoryPoolTest::setUp() | ||||
| { | ||||
| } | ||||
| @@ -83,6 +303,8 @@ CppUnit::Test* MemoryPoolTest::suite() | ||||
| 	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("MemoryPoolTest"); | ||||
|  | ||||
| 	CppUnit_addTest(pSuite, MemoryPoolTest, testMemoryPool); | ||||
| 	CppUnit_addTest(pSuite, MemoryPoolTest, testFastMemoryPool); | ||||
| 	//CppUnit_addTest(pSuite, MemoryPoolTest, memoryPoolBenchmark); | ||||
|  | ||||
| 	return pSuite; | ||||
| } | ||||
|   | ||||
| @@ -25,6 +25,8 @@ public: | ||||
| 	~MemoryPoolTest(); | ||||
|  | ||||
| 	void testMemoryPool(); | ||||
| 	void testFastMemoryPool(); | ||||
| 	void memoryPoolBenchmark(); | ||||
|  | ||||
| 	void setUp(); | ||||
| 	void tearDown(); | ||||
|   | ||||
| @@ -32,7 +32,7 @@ objects = \ | ||||
| 	RemoteSyslogChannel RemoteSyslogListener SMTPChannel \ | ||||
| 	WebSocket WebSocketImpl \ | ||||
| 	OAuth10Credentials OAuth20Credentials \ | ||||
| 	PollSet | ||||
| 	PollSet UDPClient UDPServerParams | ||||
|  | ||||
| target         = PocoNet | ||||
| target_version = $(LIBVERSION) | ||||
|   | ||||
| @@ -990,6 +990,33 @@ | ||||
| 					RelativePath=".\src\OAuth20Credentials.cpp"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="UDP"> | ||||
| 			<Filter | ||||
| 				Name="Source Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPClient.cpp"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerParams.cpp"/> | ||||
| 			</Filter> | ||||
| 			<Filter | ||||
| 				Name="Header Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\MultiSocketPoller.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\SingleSocketPoller.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPClient.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPHandler.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPServer.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPServerParams.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPSocketReader.h"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<File | ||||
| 			RelativePath="..\DLLVersion.rc"> | ||||
| 			<FileConfiguration | ||||
|   | ||||
| @@ -1,264 +1,6 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="debug_shared|SDK_AM335X_SK_WEC2013_V300"> | ||||
|       <Configuration>debug_shared</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V300</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="debug_static_md|SDK_AM335X_SK_WEC2013_V300"> | ||||
|       <Configuration>debug_static_md</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V300</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="debug_static_mt|SDK_AM335X_SK_WEC2013_V300"> | ||||
|       <Configuration>debug_static_mt</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V300</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="release_shared|SDK_AM335X_SK_WEC2013_V300"> | ||||
|       <Configuration>release_shared</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V300</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="release_static_md|SDK_AM335X_SK_WEC2013_V300"> | ||||
|       <Configuration>release_static_md</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V300</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="release_static_mt|SDK_AM335X_SK_WEC2013_V300"> | ||||
|       <Configuration>release_static_mt</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V300</Platform> | ||||
|     </ProjectConfiguration> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectName>Net</ProjectName> | ||||
|     <ProjectGuid>{B057A1FE-09F7-465E-B8B5-E1B659051D76}</ProjectGuid> | ||||
|     <DefaultLanguage>en-US</DefaultLanguage> | ||||
|     <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> | ||||
|     <EnableRedirectPlatform>true</EnableRedirectPlatform> | ||||
|     <RedirectPlatformValue>SDK_AM335X_SK_WEC2013_V300</RedirectPlatformValue> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'" Label="Configuration"> | ||||
|     <ConfigurationType>DynamicLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'" Label="Configuration"> | ||||
|     <ConfigurationType>DynamicLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/> | ||||
|   <ImportGroup Label="ExtensionSettings"/> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>11.0.61030.0</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'">PocoNetmtd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'">PocoNet</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'">PocoNetmd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'">PocoNetmt</TargetName> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <OutDir>..\bin\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|     <LinkIncremental>true</LinkIncremental> | ||||
|     <GenerateManifest>true</GenerateManifest> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <OutDir>..\bin\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|     <LinkIncremental>false</LinkIncremental> | ||||
|     <GenerateManifest>true</GenerateManifest> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>_DEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;Net_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>true</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>ws2.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>..\bin\$(Platform)\PocoNetd.dll</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\lib\$(Platform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <ProgramDatabaseFile>..\bin\$(Platform)\PocoNetd.pdb</ProgramDatabaseFile> | ||||
|       <OptimizeReferences/> | ||||
|       <EnableCOMDATFolding/> | ||||
|       <ImportLibrary>..\lib\$(Platform)\PocoNetd.lib</ImportLibrary> | ||||
|       <SubSystem>WindowsCE</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;Net_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>ws2.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>..\bin\$(Platform)\PocoNet.dll</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\lib\$(Platform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
|       <ProgramDatabaseFile/> | ||||
|       <OptimizeReferences/> | ||||
|       <EnableCOMDATFolding/> | ||||
|       <ImportLibrary>..\lib\$(Platform)\PocoNet.lib</ImportLibrary> | ||||
|       <SubSystem>WindowsCE</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>_DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>true</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <ProgramDataBaseFileName>..\lib\$(Platform)\PocoNetmtd.pdb</ProgramDataBaseFileName> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmtd.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreaded</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmt.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>_DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>true</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <ProgramDataBaseFileName>..\lib\$(Platform)\PocoNetmdd.pdb</ProgramDataBaseFileName> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmdd.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmd.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="include\Poco\Net\DNS.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\HostEntry.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\IPAddress.h"/> | ||||
| @@ -365,7 +107,37 @@ | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectName>Net</ProjectName> | ||||
|     <ProjectGuid>{B057A1FE-09F7-465E-B8B5-E1B659051D76}</ProjectGuid> | ||||
|     <DefaultLanguage>en-US</DefaultLanguage> | ||||
|     <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> | ||||
|     <EnableRedirectPlatform>true</EnableRedirectPlatform> | ||||
|     <RedirectPlatformValue>SDK_AM335X_SK_WEC2013_V300</RedirectPlatformValue> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/> | ||||
|   <ImportGroup Label="ExtensionSettings"/> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'">PocoNetmtd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'">PocoNet</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'">PocoNetmd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'">PocoNetmt</TargetName> | ||||
|   </PropertyGroup> | ||||
|   <ItemDefinitionGroup/> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"/> | ||||
|     <ClCompile Include="src\HostEntry.cpp"/> | ||||
| @@ -467,16 +239,11 @@ | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|     <ClCompile Include="src\OAuth10Credentials.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V300'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V300'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V300'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V300'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V300'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V300'">true</ExcludedFromBuild> | ||||
|     </ResourceCompile> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"/> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> | ||||
|   <ImportGroup Label="ExtensionTargets"/> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{8ee56ced-ae35-4ed7-bfb0-81727f22ca35}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6e35768e-9e83-4e1b-aae2-7cf8146c5df5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{d3e8398c-89af-41a7-b047-84d7104e3eeb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fdd20b5f-b38e-4d8b-96d5-2319d6dc2f02}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{e8121c1c-88e1-45a3-9e98-60f86e6e5e80}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{54e933ff-0d21-4da8-bfcd-631ddff6146e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{b3b830a0-a79a-4dcf-abd5-627d49bceb8f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{50a8db04-7788-4e4a-b30a-a46985108b3c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{4a7e380c-5e14-4c83-a09c-988f8b1ee91e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4409d30f-f2f7-439e-b7f1-0dbbd9ea389f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{649f9df2-1527-406b-92ae-a83b758a226d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8ffd8aca-d89e-42b9-9f1f-bf858d0729bf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{f90a1094-b24d-4db2-b557-da245f81292c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0dbbc7a8-91e0-485a-a589-c86a10a587e9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{fa2d94c7-7060-4004-b2f4-a4d9be16264f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6662bd96-0b1c-4595-a348-1aadc3b09ec2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{2002ad1d-44a8-4206-8e9c-ad8b83049fb3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4dcb6e80-b062-4792-bb6c-cd6f5b0fb0a4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{4d41a85b-8419-40b6-90da-4d08c8580e77}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bc61e3f7-206a-44eb-b521-02f60d4c12b9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{5370f636-392a-4ce2-86a0-9f8a46dd3c8e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{30fcd6f8-9e38-401b-ae4d-6828ec7773d5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{0c040e0b-020c-42db-b74e-6f8e68b691be}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e6ca6c60-fc9a-4615-a5a0-d69f4e8f2fc2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{39acadd7-43fb-40cb-894e-6cbfbca2ef78}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7c9ade5f-a564-4742-86c5-d93e68e5ede7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{b5fef4b0-eee2-40ec-94d2-eea9503a7f62}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1dc83bcd-6ca8-455a-9ab7-4eca756c2228}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{40073a93-8a74-4efa-b29e-7c699b294ffb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2115b4b9-dfb4-445d-850f-2906256362f5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{764bd47f-5f31-43a7-9865-b2ce1d918e7c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5dd8e914-726f-4598-846d-4fcc95f497ae}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{0e294983-abfe-46e6-9799-c2c66afbc43d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f461b76f-d793-425c-9e0a-cf11d51f1bd3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{db93e519-1ce5-4685-94cf-b85c26b161ac}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{17dc770e-792a-4491-a987-261326f3cc57}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{7f53439a-37ba-4048-80c1-8b4225b31008}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{737a15d9-d24d-4768-9959-91ddf97336d0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{d78e3692-c47c-474c-8b1c-97c6247782d5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d9d8c54d-1122-4d9e-ad42-aa50f3342a08}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{0041736c-28d5-4a45-9340-7dc95953e37e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d71109d0-cf28-4738-ae78-73f50cf6f183}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{01a5a86a-8e2d-43eb-af5e-0717379e2383}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2b331b5f-7ee0-4671-96a7-d8dc65096c22}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{9f3212ff-39bf-4e54-b344-2ea1024984af}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4c9abf90-f611-40f9-a79f-c465bb95a5de}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{7e53936f-b65a-42d2-b24c-d9a8a267aece}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{64168a9a-9db7-4c80-a382-74a1b747efb7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{a572aafe-1463-4f92-ad52-19154ba14020}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2e6aa01d-73ba-44e2-9a51-294cf16c7ad8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{90e9c9b7-e61c-49af-b2e5-7413c2d3f034}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6a6f1729-eb2a-4d63-8ad2-9d67a92abb74}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{19cd86f1-c474-4e39-abf8-1aaf821028be}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dd78462f-9f2b-45b2-b45d-4bec31a7437a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{23160e3c-8de4-4e44-a6c2-0a57459249d7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{49379859-7fc3-4dee-8984-1e8b3bbdba57}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{afa05c4d-1275-4bea-be5b-9214aabf771b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7c0f1f9b-5129-4679-b484-196bd5b5c4dc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{342ac598-b712-4db4-82b5-19d93778633d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{884d5cb0-f7e6-4fdf-9f7a-8ffdc2337a24}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{4158634b-967e-4b6f-a00b-ad078bd13ef9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{24357345-c638-4dde-af7f-7d4d2689c886}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{58a5bfcc-60c3-4603-9d69-f0a124f50813}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{003d0484-e256-4c32-bffa-23971ef9a6a2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{dece29ca-057c-4353-aae4-28aa6e3eff61}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2d712539-6ad7-4c02-8328-0a74e5d696a4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{44234863-8ac2-4a7f-969a-f67f286190b6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{73a455a9-084c-49ea-a550-f40c73fb8ba4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{365558e6-239e-44ba-9fb4-696d74aedc38}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2ca14da0-809c-4786-b4fd-7ccc0f624a3a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{8c7e403c-bde5-45b2-bef2-7ac1568d722d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c84f10cb-d40f-4caa-89f5-d0d6ef5302d1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{bcd5e8ab-eae0-48ce-b21c-361c65e8b9eb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ca0a5034-e6d1-48ce-ac49-05c4f6f442c6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{cef33ffd-1101-4abe-a1e2-b7867778e916}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f11f8d96-8104-467d-9739-21b64ca6e5fd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{be07a1f8-516f-4591-acc8-6bdd59e41031}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ede4fe25-2bbc-4677-ab96-3372c06fede0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{6420f9ab-2ee6-4e4a-8c51-e20b055ddd5a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e0239281-836e-46d6-9bfe-fcec8230f54c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{5b3465bf-3dea-4120-a07a-9ce4c4603bf4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d0f3b2a4-e15e-4d0c-a5ef-b5898edfa616}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{d63a7c69-e22f-4846-b55c-6eec5151c5bc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{73b7bd90-d068-4359-b73d-ca8fa679a678}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{fe9b1bde-92da-4ee6-8ccf-59a6f714d4dd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2861b677-cb4d-4426-8386-4691125bd7f4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{4e69bbbd-e362-43d6-b0fd-34b6da9ae919}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3d64261c-34e6-41be-acad-8d7ad3943b77}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{29e1911f-be57-41cd-9ff4-b611da1e1f68}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2676a94b-2bd8-4c43-8b0b-cb7c1f47e196}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{7263f4a3-ccbf-4a21-9c14-a2f9aea4d5cf}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b0ddf043-be30-49c9-ab59-c82382028662}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{084e0512-1072-419f-ac36-df807e4b3f8b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7beec4dd-819e-40e6-bea4-704042f46e9b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{99c89e81-5611-43a5-828b-70dc60b0e733}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c537ca3e-c040-44a8-8345-4fd620b3cb70}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{c4c9c248-7a1a-463e-9b8f-32e2da8bd150}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{e2774308-5461-489d-ad9d-b43fbacfdefe}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{1945e2e6-bf73-45ec-a283-11126f1fd9f5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -1,264 +1,6 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="debug_shared|SDK_AM335X_SK_WEC2013_V310"> | ||||
|       <Configuration>debug_shared</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V310</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="debug_static_md|SDK_AM335X_SK_WEC2013_V310"> | ||||
|       <Configuration>debug_static_md</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V310</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="debug_static_mt|SDK_AM335X_SK_WEC2013_V310"> | ||||
|       <Configuration>debug_static_mt</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V310</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="release_shared|SDK_AM335X_SK_WEC2013_V310"> | ||||
|       <Configuration>release_shared</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V310</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="release_static_md|SDK_AM335X_SK_WEC2013_V310"> | ||||
|       <Configuration>release_static_md</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V310</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="release_static_mt|SDK_AM335X_SK_WEC2013_V310"> | ||||
|       <Configuration>release_static_mt</Configuration> | ||||
|       <Platform>SDK_AM335X_SK_WEC2013_V310</Platform> | ||||
|     </ProjectConfiguration> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectName>Net</ProjectName> | ||||
|     <ProjectGuid>{B057A1FE-09F7-465E-B8B5-E1B659051D76}</ProjectGuid> | ||||
|     <DefaultLanguage>en-US</DefaultLanguage> | ||||
|     <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> | ||||
|     <EnableRedirectPlatform>true</EnableRedirectPlatform> | ||||
|     <RedirectPlatformValue>SDK_AM335X_SK_WEC2013_V310</RedirectPlatformValue> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'" Label="Configuration"> | ||||
|     <ConfigurationType>StaticLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'" Label="Configuration"> | ||||
|     <ConfigurationType>DynamicLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'" Label="Configuration"> | ||||
|     <ConfigurationType>DynamicLibrary</ConfigurationType> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/> | ||||
|   <ImportGroup Label="ExtensionSettings"/> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'" Label="PropertySheets"> | ||||
|     <Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/> | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'">PocoNetmtd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'">PocoNet</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'">PocoNetmd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'">PocoNetmt</TargetName> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <OutDir>..\bin\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|     <LinkIncremental>true</LinkIncremental> | ||||
|     <GenerateManifest>true</GenerateManifest> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <OutDir>..\bin\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|     <LinkIncremental>false</LinkIncremental> | ||||
|     <GenerateManifest>true</GenerateManifest> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <OutDir>..\lib\$(Platform)\</OutDir> | ||||
|     <IntDir>obj\Net\$(Platform)\$(Configuration)\</IntDir> | ||||
|   </PropertyGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>_DEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;Net_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>true</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>ws2.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>..\bin\$(Platform)\PocoNetd.dll</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\lib\$(Platform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <ProgramDatabaseFile>..\bin\$(Platform)\PocoNetd.pdb</ProgramDatabaseFile> | ||||
|       <OptimizeReferences/> | ||||
|       <EnableCOMDATFolding/> | ||||
|       <ImportLibrary>..\lib\$(Platform)\PocoNetd.lib</ImportLibrary> | ||||
|       <SubSystem>WindowsCE</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>NDEBUG;$(ProjectName)_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;Net_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>ws2.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>..\bin\$(Platform)\PocoNet.dll</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\lib\$(Platform);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
|       <ProgramDatabaseFile/> | ||||
|       <OptimizeReferences/> | ||||
|       <EnableCOMDATFolding/> | ||||
|       <ImportLibrary>..\lib\$(Platform)\PocoNet.lib</ImportLibrary> | ||||
|       <SubSystem>WindowsCE</SubSystem> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>_DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>true</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <ProgramDataBaseFileName>..\lib\$(Platform)\PocoNetmtd.pdb</ProgramDataBaseFileName> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmtd.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreaded</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmt.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>_DEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>true</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <ProgramDataBaseFileName>..\lib\$(Platform)\PocoNetmdd.pdb</ProgramDataBaseFileName> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmdd.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> | ||||
|       <AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>NDEBUG;POCO_STATIC;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <StringPooling>true</StringPooling> | ||||
|       <MinimalRebuild>false</MinimalRebuild> | ||||
|       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|       <RuntimeTypeInfo>true</RuntimeTypeInfo> | ||||
|       <PrecompiledHeader/> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Lib> | ||||
|       <OutputFile>..\lib\$(Platform)\PocoNetmd.lib</OutputFile> | ||||
|     </Lib> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemGroup> | ||||
|     <ClInclude Include="include\Poco\Net\AbstractHTTPRequestHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\DatagramSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\DatagramSocketImpl.h"/> | ||||
| @@ -317,6 +59,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -342,6 +85,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -363,9 +107,37 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectName>Net</ProjectName> | ||||
|     <ProjectGuid>{B057A1FE-09F7-465E-B8B5-E1B659051D76}</ProjectGuid> | ||||
|     <DefaultLanguage>en-US</DefaultLanguage> | ||||
|     <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> | ||||
|     <EnableRedirectPlatform>true</EnableRedirectPlatform> | ||||
|     <RedirectPlatformValue>SDK_AM335X_SK_WEC2013_V310</RedirectPlatformValue> | ||||
|     <PlatformToolset>CE800</PlatformToolset> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/> | ||||
|   <ImportGroup Label="ExtensionSettings"/> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'">PocoNetmtd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'">PocoNet</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'">PocoNetmd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'">PocoNetmt</TargetName> | ||||
|   </PropertyGroup> | ||||
|   <ItemDefinitionGroup/> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\AbstractHTTPRequestHandler.cpp"/> | ||||
|     <ClCompile Include="src\DatagramSocket.cpp"/> | ||||
| @@ -465,18 +237,13 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_shared|SDK_AM335X_SK_WEC2013_V310'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|SDK_AM335X_SK_WEC2013_V310'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|SDK_AM335X_SK_WEC2013_V310'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_shared|SDK_AM335X_SK_WEC2013_V310'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|SDK_AM335X_SK_WEC2013_V310'">true</ExcludedFromBuild> | ||||
|       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|SDK_AM335X_SK_WEC2013_V310'">true</ExcludedFromBuild> | ||||
|     </ResourceCompile> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"/> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> | ||||
|   <ImportGroup Label="ExtensionTargets"/> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{f3e1db68-e5b7-4724-94c5-e1c9560ce937}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3d4963b6-d7df-4710-97f8-9d5a675f6095}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{a207e531-8a37-4149-8d65-2d3c99528e89}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bb1fddd8-7855-41ec-b480-5617f359a0b6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{c7f09d94-e478-4810-8c6c-443bc6730bcb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{299bdd44-1974-4b2c-88b6-98ef3f196745}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{b2219a36-f5c1-41b2-aac7-16145caef2b2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2fc8da2a-27a8-4e58-8e7a-9107d5ffa233}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{1d33cc80-eefc-4711-a028-e93ce942b809}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{356b63fd-d879-4b8c-a426-b957d1a6a5e7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{c540872a-4553-4275-9e3a-0982c9fb271a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e4d5f199-73aa-497d-9dae-422407cf45b5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{9995a74c-955c-4c64-853d-6472040f759e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{19da3407-2185-473b-9fae-d7b46f3b63b4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{bcdde3fe-8054-45fa-9307-5f71afeb1122}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7969b7e3-61fc-4aa9-8fb5-e1f49ec688ec}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{a9479670-7429-410d-a4b9-56ddfe1914a7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{95104171-3b83-431d-8b71-b7e09ed97848}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{85668933-3986-40b5-8e84-05842c7a240e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{057ecfa6-2332-4d88-922a-c8c6a8de9dbf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{af5474c1-aa96-4f90-b8e5-22332b714cec}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1dfbf284-65e3-47eb-8b68-c7ef30832805}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{eed7f32b-3eea-44c6-8067-bd6988c93153}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{45cad813-7cf8-4701-9d1e-7e96e9c90b72}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{64f6298f-94a7-4f09-830c-f941d1a654b6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0bc87ac1-6d60-48b3-967a-895f8aa1bd64}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{f18adc48-2c49-4be5-83db-1bdef111f01d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9cb0c042-8fd4-4531-aa3b-fc5d5a630dc8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{655d4e06-14d8-44ca-8a6c-438e3ec1bd2f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4e432213-4c58-40ca-96a9-b7b5a112829a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{5f4532f9-5df5-4352-8dbe-c7b40fa5ee64}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e7061686-e7a2-4e17-b348-5af429e8ab58}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{b5bf5492-f8a3-4701-80f0-b6f9d3962944}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a3b60b73-dd45-4b8c-9ef8-5699a8a0087f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{79dec663-746a-4cba-9984-4724e96c5fcc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2566c190-9ae6-4038-a86c-7aa8a84d6e5b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{9735918a-31c0-4c17-bd8e-ade820b84222}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2d57462d-926c-4b16-bdaf-98267f466e50}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{51f9e232-a754-480f-9e93-9ea102a22de6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{758e1049-9f5a-49e7-83d2-4b16ced0430c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{857bcfb1-da2f-43e8-91ba-b165dd91874f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{49dd4cf7-0100-4d8b-9ea6-da95cef91419}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{dd9291ba-aae6-4be6-ac55-6a540c519cc9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4adb5d60-c6a1-4330-8817-b6ff10ea34e7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{c7cdd37f-09b8-46dc-bb69-cb61f91719f3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ede5b946-56fb-47bf-9933-23c2e35bb348}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{63fab1c0-d1a3-4ab8-89b6-85a76d6e9bf7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0fab7e33-838c-41d8-bbf6-093f5b008e96}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{3f097d1c-a559-456b-87e8-0d633e27dc86}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6dd6869a-a861-41a0-b089-018ab463d521}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{6839f33b-b583-4d72-b9c3-e475e10faba8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{103a71a3-0dd9-43f7-8ded-a97a67c8f802}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{d2d45029-50f7-4ccd-ae05-655dcb9a4225}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5b916500-0482-49a8-8a27-79d872a47a0e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{b07f321e-aee4-4325-ba97-a542ce5f4779}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5ab0745f-3764-46d0-b0f2-5fa69dee066e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{2b394717-615e-4b13-8f73-5979826afa14}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8a848701-c617-4d4e-9afb-51aa3a753862}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{d3fff85e-2d06-4727-9026-9818ce4fc344}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0eeca428-6973-4c5f-ac8a-8ce8d11c6625}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{f896b76e-a236-4b2c-a677-6ac3007c1f02}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f9d008b5-fa17-417b-b645-31cf23b81f38}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{8a6543e9-4c02-45b5-92e8-2af763b906df}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5e30e60b-37a3-4996-8903-663bae145bd8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{944f67f7-4cd1-45e8-a4fe-3570c064e8ce}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e585dbae-6751-48dc-8e7d-c1fb36a524b6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{7c875980-a6d2-4563-a62b-07a2249489ac}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9306c380-189a-43c8-94bb-fbaee760a79b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{e98fd658-f7c5-41e6-8496-9aa970adf752}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f81396b5-46c7-420e-8a91-7cff884b4d20}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{9b88fcc2-6ff5-45cf-b2c3-ce2e7977a68c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2decf213-c0e0-42a1-9a38-30e3946f32ec}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{29f67c09-89d4-4a23-a075-2d904740741a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d8057121-76d4-4166-b6b3-29f6239d4831}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{89ad7280-bfa6-4ce8-9aac-53d7dace085c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4e048ae6-bc42-43c4-a63c-e4fea5db6f26}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{913760bd-fea6-4f8b-92d0-3938752ab30e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d92701ac-4a0f-4be3-9a0d-5795956a1a32}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{58ff245b-fe9a-422e-8846-cf2cce08187b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a76b54e4-aa61-4075-a449-d10ad20f8af9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{9b584f35-0765-49f4-b6ea-f2c5c940af6e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b77083a8-fbc9-435a-b667-76ace19e138c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{e838c493-14da-418b-9fdf-f722177550de}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{abc047d9-7b16-408c-92ec-c5067e906030}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{55004bfa-4da1-48ae-8e71-a32963f836e1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{86b46567-46f7-43ce-a902-61d7f8fae112}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{c5112127-ee8a-472f-8a93-5a1579123f01}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{620a5026-8228-48f0-ad3c-5aed338c1f49}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{feafcd59-50bb-41da-8ead-e99c3cdb77bd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4bc8dae5-f38c-4ec2-a662-7ceee49fdad1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{52dd5c39-decb-4e0f-9be0-41b0bc459815}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1dbe074f-20d7-43fa-880b-1decd61f640c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{8cb55bd0-7803-46d3-aa12-2abb79156501}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{19c7eddf-a41a-4f7e-b951-9c3498d38d5e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{6e9b87ca-7033-4f05-83b6-c2f5d3eee9ce}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e15b5545-ae7b-457f-814a-12cf601fe392}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{44141c42-8b47-49bc-8b87-24ba1cd9de1b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{ef7cea07-8a0f-48d3-84ef-ff8e85564e3f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{54859cdf-28f7-4a93-b134-0c8e75d20848}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -381,6 +381,13 @@ | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"/> | ||||
| @@ -483,6 +490,8 @@ | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|     <ClCompile Include="src\OAuth10Credentials.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{87211f6d-2bd7-42a7-83f8-577de8900fe4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3112c7c9-dbd2-428c-b9bc-bee436d86fcb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{f0e2708b-c1c5-4700-9b9b-26ad95fa976f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2be5f8ef-9fed-47d1-a1be-6c7f5ca89cb4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{4793786c-1dda-45be-969c-0df62d07decd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fe26165a-7085-4291-9bc0-a61b9adb1c71}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{98313952-bc19-4074-83b1-cb301cea2483}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dbf8e162-f7c3-4c76-b48f-a4bf96984cb2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{9f3a8fe4-c9b4-453a-b9db-1d0b24d860c5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fe1feba9-bceb-4bd5-8499-f85462920dbf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{ae356354-a8c2-4ae9-8347-b3295e4f9857}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{10a99a4b-6ec4-454d-a237-fbb8fbaff21e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{84b0b1bd-05ad-4fe9-af14-26016cd75cec}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{70dc979d-9ce2-443e-9ad3-89ce5f01fe52}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{aea583e1-232a-40df-9831-1f2cd99faa2e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e52ff7d4-82e6-488a-b11c-6d6c798306d2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{c36d0e86-9c80-400c-b6cd-bb93efd50734}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{39b46f91-35df-4254-b119-2ae4386e9ed0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{d84641ab-6aea-43fa-a9b3-c5c6a2f4a7af}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7dfdde05-f0f6-4a54-986f-35927089c51f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{ba0410df-f386-4a47-855b-1a67489daeb8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{52261253-8a5b-4630-bc6b-52bf632c362a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{798e1544-bdd5-494a-b849-0201aa9c03cd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b0aa5df0-871d-4e5f-8b50-71f0de694728}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{6d67f85f-7c62-4ab1-8ce5-39522cf5f064}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c92b290c-c7d1-4a58-9039-c6cd84642e09}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{3971cf3b-df0c-4f97-8314-8905759867d5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d110956c-7eb1-46d3-b37b-54b281f6224d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{f8ceb19d-4df3-4cc5-9c68-f7dddd15d888}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a7602bbc-f961-4ecd-ab07-6c57b49db444}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{7af2aac5-0500-4fde-bcb8-074454ca8235}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{df6522c7-1921-470e-85f2-aa3228b7bcbf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{9951c46c-a205-41ae-9eaf-2454bbf4a958}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a73b4d3e-cf7d-4a6e-a362-8d1e42e1ecfc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{9e55ed47-d527-422d-8da3-91739d2892b5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f5a1c829-ad43-47b4-a02a-68a75b02126b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{9127f9d7-7f4e-43f9-a5a9-be184c62a8de}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2342021b-fa7e-4121-8cb7-5df634b6c45d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{f80d59e6-8c38-4a98-8ea5-5f9677258c32}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{12724675-834e-496d-a000-ceb57944985f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{0291bb8b-b010-44a8-ad32-a22e21feb169}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{13bf28dc-c06b-4cbf-97e5-68d6129f3f6c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{95df4d30-0cc9-4e43-862e-964f0c77dbc5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a59f60e1-76a7-4c95-af3e-ac94b502bd2c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{e129147f-dd0f-4454-a4a7-720e2459c90d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{402c23a6-be16-41ca-a132-54f5b80d59c9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{94904c68-8bf1-4e87-bcef-d7e1d7b68712}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c309c15d-9f94-48eb-9855-7998f6defa9b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{07b8b34b-e5a6-4a22-b239-d33fb7f15fec}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a5f9e6ae-90b2-4417-a561-a55061e5fec9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{94d3c731-800c-45bd-94e6-df699391b501}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8466e297-20b4-47ae-a887-c5ff0d45ce78}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{586faf30-7ebe-4ff5-89d6-eb17b4a835d0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0445ae82-0782-4886-a214-999676554772}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{88b5b6f0-086d-4eca-949e-1fe91f64aa4a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{98190227-ff15-4a0e-9138-cf62a710ec6e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{0e1e26ff-bd95-4353-84b5-2409bee109ef}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d839ac9c-c0c8-4a0d-b71d-983036fdaa2f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{1cd34d3a-1baf-45f7-bd37-040eb53038c9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d42fb054-f522-426b-bbc6-1b260c275713}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{dacf32c6-7cd7-4594-a11b-0163a9b275ac}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{54d35578-6cb6-4643-99f8-57a0cb16d8e0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{23b154af-c94e-4bc0-b2aa-6414b1f107b4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5d1fce8e-4527-4809-acba-a2f8fe806890}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{f390b410-3a22-429a-9d2c-7cf724d08d3b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{88b736df-0022-4fe5-bccc-436e7e15efad}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{7a45b352-0bd6-4e11-b2d5-a576637f0f32}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{545bbed8-2453-4110-a44d-c736bfc2eb08}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{cd18f608-2c56-45fe-8cab-88e61b626360}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e73b6e65-a0b3-4577-b062-e5df3d91e81f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{a2caa923-30ca-46a0-bbda-a4d7b5c68560}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8d63beaa-5a39-4b95-a6af-c6101c0fac1a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{099bc8ef-9e2c-482c-ab65-7e0d77dc9b7b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dd4de661-d6e9-4dfd-b9de-884ef2d948d0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{f2530b4c-7a5e-42c0-8670-5cdcd308a5c2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c9eed670-0eac-4978-b619-9f6630082f00}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{75514a2a-029d-4def-b3e2-239a74f2675b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ac9feb06-1987-43f8-8ee8-a279e6085821}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{223a49f6-01b7-41a1-acec-22cd4ca37f63}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1f8b5a2a-3fe9-430a-a2b0-67b3825abb6f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{db318ab0-4220-458a-9fea-146a056c2232}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f9123dc5-28cd-40f8-8e02-a2194555a3c7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{c1f81966-497e-4a72-907e-47f24b3b2791}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4d7908a1-4bd4-4423-80f4-19d91876e879}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{8dc59336-2af6-4ea2-8892-681d94d10426}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{acfe2593-67b6-467d-a660-45dd35057efd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{403dffb9-502a-4b36-8900-d2816ab04886}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b27eca77-9da9-4fc0-b358-a69d6a74eb2b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{b99af649-4203-4f66-a1fa-b53736929615}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aaaeac30-cb69-4101-a77c-1d854c3a3d59}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{1f4d59d3-29fc-4c60-af5d-97439123c355}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{68f9783d-6cab-46bd-8779-88e5bfff5799}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{f162d641-57f2-4e8b-b6ec-bf1f56dd5371}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{510d818c-813c-4e95-88f8-ccbd8f49db60}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{a8cf6314-024c-41e1-ba55-957685f05ad2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b507d869-ca40-45fd-89f4-ff1d0b44e4cb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{84078495-9523-467a-8a89-facf71482dc4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{34bc2f46-b881-477e-9df1-7d1913333c1c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{826a903c-3dde-4514-88cd-f2be3e23820e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -85,7 +85,7 @@ | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>11.0.61030.0</_ProjectFileVersion> | ||||
|     <_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoNetmtd</TargetName> | ||||
| @@ -385,6 +385,13 @@ | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"/> | ||||
| @@ -487,6 +494,8 @@ | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|     <ClCompile Include="src\OAuth10Credentials.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{5e0ee010-8061-41b2-ac78-47dd9ea8b89f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{36be9e0a-bda2-4ac3-abbb-de70658044f4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{f108715d-a1dd-46cb-b0c7-576c9ad46bf2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4744f7e3-36d0-4c2d-bc19-936f8d68bcfd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{00fa8767-4417-4917-9010-e53e005f6bde}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f43abe9c-28b3-4894-80a4-3d6fe203b0d5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{139af390-67aa-410e-b721-4fdf3c9c1a1e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c4a86506-4fd7-4d5f-9a19-d622a5561e1a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{771658b8-7f1a-49cb-a543-030d1b13585b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{763f20ff-5a77-4be5-98a1-b8c70704dcec}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{084515e3-8451-43fc-8dd6-3ae02b9f68c7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1967af29-06fb-49bf-a13d-ca88975ab8f8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{257db6b8-c5bd-4e75-8cbb-ab2222d97fba}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4703f187-2778-43e8-a26e-48ab3a5f137d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{17319ac3-a861-4d29-9629-e3f190672679}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c6514151-4f44-4ee5-a027-687bc1ac0629}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{e9d98e13-fd2a-4090-aced-80b00e6a3c8d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a31284d6-0073-49d7-9aa5-178bb03fab6b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{e53be2af-0f95-40b3-b480-72eb5adcde88}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4c4f5f1c-ba6f-4dfc-9ec9-1bdfe67282aa}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{7985d407-f83c-4895-b975-6832f26f40ae}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bd90490d-667a-4917-a957-f3abbf423623}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{08c92788-c737-4895-b508-4aa0bb048db0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{53093151-3d78-433a-9688-a7fe731e36c1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{bd8aa8c9-d2e5-4c8b-a033-d434e09faf2e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6a04e21f-2419-4235-943e-c4b7d851acee}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{7198a149-bcff-46d0-9c5f-116dd8d2a9d4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{59f9a778-9d87-405e-a5a5-717185dd34bb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{735890b1-1dcc-4c8c-a776-5b365491e562}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{157f2ba5-e510-401a-a34c-f4bc38c20732}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{7df90178-20b4-45ca-9faf-04586207ec1b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{226832c0-782b-4dcc-8331-f7bb659ca591}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{397dfee6-b7b4-425d-ad72-119910582187}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ddfec897-0c48-49e2-8e3c-c84d7b415077}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{0770c3f2-b2d1-4aaa-bbf7-638504e556ea}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{31f6824c-feab-4b24-a977-09eafc82909e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{9389ea48-a056-4ab6-9cc1-cdea1f2d550a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{53c599fc-22d4-4c65-82b8-47e46d63aa7a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{5428ec24-5651-499d-9964-96cbbf7c3ace}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{31392b91-f7ec-4beb-b7f4-cb809bce9622}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{0ac1d394-1d10-449f-b88a-2893ba3bffb0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f400ff81-e36a-4f47-9a23-ee7b83e39c88}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{175a171c-aeb9-48a0-a513-83d88aa0df17}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{11f4e892-3a16-4c81-90dc-7d53e19a72a5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{253e1cb8-960b-4bcc-9767-f747da7f71e2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{33474cb9-3147-4ad4-a658-d56984a74700}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{9b027786-d085-426c-8d0f-7e65d437daed}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e619e991-8dbe-43f8-bbc9-a6ec620e333f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{049ef9e3-c207-4644-bad9-8e928684251e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7b7d8df5-3739-43a5-8c49-bb77fde6f4b8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{63b0ac64-3aa1-45d6-8060-6f69a43d9b0d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f08bfcb3-b4bd-449a-8e1a-f132d7d94190}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{eed2bbd9-465b-438f-9306-e1fb43797476}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{de8ade78-b779-4156-931d-b9b337c2ff01}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{3ec2758c-b15a-4448-aea7-8669a088e5d7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{39387355-52b3-4274-9d50-51d57d461467}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{23b81e64-202a-46ac-9cfe-bf155a502a66}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ead46adc-922b-4534-a92a-a44485bf92c7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{f0716eba-89f0-4409-8191-fef9cdc642ef}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0436ddb6-5bc9-447f-b085-affba2ecf245}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{81e0a8d3-bc93-47bc-87f8-fe0243f28497}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{30ce5f96-c5ee-4571-8feb-e73efcdda213}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{93bc27ea-657c-4d73-804a-1035ec9d05e1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f431f07c-1dd0-4d53-bc28-bee0ac37bdce}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{13acb61f-3723-4096-b1de-a490d9c79e84}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a39a9b2b-ed5d-498a-b83c-dfd1f21d976c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{c852ea94-f521-4f64-9740-e489c3acf98c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4c1ee7d0-846e-4a2b-8e2d-3b32b00c727b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{c526f5f7-60b8-49af-bf73-5349bb6409a8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3102b233-638a-431f-9d44-f059eab414ad}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{7912c8ff-7af3-49d9-a9f2-95f838fe2680}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ad25b068-a579-4edb-8d91-d5a1b421b3d7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{30571f88-841b-4210-a889-0d6c3da94d4a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ff6af4fd-831c-4abf-940d-64f390fee5f2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{0cb7be28-5ea2-4bcb-b527-6bddb06f234f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2d52a6f7-6c6e-4882-92d1-2bfee2950838}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{ed825eda-701d-4e69-9c61-0aa2558ba807}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6c9ba10d-a26e-4e6a-8f33-bdd4a2ec3218}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{d75a99d5-e40f-4906-8c31-2b0a1df36134}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{423b4f67-fdd5-436b-97a4-4b1311568099}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{0ac03649-8844-4d85-908e-78b717c373f5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{25f6b863-02dd-44d0-9430-97c6eee7d1b0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{fe1b2da7-f47f-4839-8dd7-37de9baad4f6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4b96b87e-1e52-4b07-834c-85bbca678d6c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{358ba0bf-115c-4a7e-b7d8-fce8c59b8538}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{81618bc1-5d90-49c3-b378-199d10b190f3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{97077836-50f9-4e73-99c4-5cef869b46a8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3504d229-8a6a-4ba9-b22c-e4a33b45d38c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{975c6b48-7219-475d-b6f4-e347b5b53817}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c2c3abc9-4777-4bf5-b456-bd45b10adfd1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{5f91d6d4-a99c-4c83-9272-1b17a6e6d11c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{cac35a19-3ece-4f9b-96c5-fea7e6d8fbfa}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{13f2d0e0-3141-4145-a96f-ac9099baecea}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e8376318-2015-47b5-b50b-7f168329668d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{dc7656fe-fffe-4ee3-8d42-9e01b9d878ef}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{70a9c9ee-9356-40fa-8a1a-4ec9465c725b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{18ceb09f-b777-4ff5-a4a2-23b1d36427e7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{f49505a3-6f0a-409f-ba53-e50e00c6eea3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{a383b2e5-530f-4fc0-b434-170087b350fb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -337,6 +337,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -362,6 +363,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -383,6 +385,11 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -485,6 +492,8 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{1e635be4-8e33-4a16-b606-3ea1a75d434e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{20226d40-f12e-4d93-a047-91b335d171d8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{df13f6bc-d5ae-4132-9445-3f2fd5dd1e35}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f28f279-7cd2-4b18-9c22-9255108b440a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{a22925d7-6207-489b-a3c8-65b60201f80e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d592797d-4447-4653-b006-c05f42aa3d1a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{75289941-49ff-405d-90ac-c3fcca4c1381}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{89d30108-61cd-409e-978e-bfee24b2c544}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{6ef2a968-144c-488a-9809-6a771e885957}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3685a932-3a17-4d73-a760-d594ce59bdf4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{3c89546d-0118-4150-9119-2a6ddb31694a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b7fe022c-4ab8-4baa-b094-4890ba4e1890}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{2a707bf2-6006-4ea0-9021-460b12eb03b1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4173068f-0ac9-4bc3-8cc2-90ed730815ad}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{8e293f27-98b5-4770-b989-39b434be7017}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ca5341c5-ede1-4a99-a750-c553df90567c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{f830ea6c-9b77-495a-91a5-8c1911868ef8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{eae22c1f-a613-4b70-b2b8-3210530d8347}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{59e6a108-b670-4131-96c5-a90a386d9dde}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{612ceec5-0f2b-4e0f-a344-cdf9c0f4497d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{eaab392f-0958-468c-b0f3-52096f1fca6d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ed856472-c113-46c9-989b-f92f17fc56e0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{6e6fbf4c-debc-464e-bcf0-4f060d6a6569}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a75f2870-f628-46d8-a4d3-ba452923cca3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{ad760145-9d66-4885-b9c7-1fe4fa8fbc0e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{69440fc1-9228-4345-a1c2-0c04e4d37ff0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{91688cbc-6ffe-4874-9925-09d27913adf7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{cc896121-0606-4507-87b2-e4b76245f6c2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{7f30e5b0-1a36-466f-9e8a-3748752154b9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3d47ca95-1ec9-4d1a-ae65-d2568636aed3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{7e34bdc1-5dd7-4a3c-ba64-27c43158ea6a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{844dc5d5-943c-4374-a0dd-9ca3e683cbf7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{514e46a9-1236-4f51-9892-202a1bbac256}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4e39a4e7-3d0a-4bd6-8a43-83db7db862b9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{86af4f6c-61e2-49e6-87ae-4350ce816d76}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{33663199-5274-4c91-a08c-b46c9335716b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{1e1c8ada-a8c0-400f-995c-a853b4dbc422}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0a1b2f6a-cee3-4c12-904f-455f583fcd10}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{e4d581c2-7277-4074-86a3-9d70ec3bf228}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{142f6855-779f-4fe1-98a7-40cdad53235c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{dcbc57f5-16d1-40ff-8519-52d834ee4f89}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7cd42e62-555a-48e3-9257-bb1f7fd96705}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{7d34cd9c-9073-4b47-bf0f-86fe0f22ef7d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{093b4183-cfe6-4d64-96d2-e836c861fa0f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{a5dc23af-0f1b-41b4-af3a-7ef9f370a331}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c3b2b040-cc63-45db-9e61-53f255a7b8e5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{88eb3d27-a806-47e4-b127-8d6e88152820}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1d5803f9-f1df-4946-bb34-a2e1859c9f01}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{4272fbee-b793-4822-af52-f62de2d5ffdd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bcb39c8a-d124-428d-92b0-01275b149deb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{7a704b64-1076-467f-9785-646354e5f3dc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6f2e0d13-43a5-4e03-bdf0-b9c483f554cd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{e1dca0be-b536-419b-96bb-02d6b944e301}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d06344fc-67f6-4a18-8910-7137db5b4eb5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{f13a8274-133f-4858-a9a4-8f824459f5e9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dd53c09f-ec3b-4fd8-9ede-2df2f2f71f5b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{128adf4b-8c53-4afd-b3a0-4f4f9a9c0273}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{46422925-b98f-4b7d-9d31-65f1f92a405e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{009ae12a-dde9-4144-a025-242d6af646b3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{42dcbce7-d1a0-4645-a540-2906af73a4ae}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{fbcc447f-ccd0-4181-90cf-c26b38d3fc9c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5277930c-afaa-46da-9d2e-16d36333be9f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{75689e71-cd1d-43c3-b00f-fc0878486b46}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{10ed9005-a740-4621-bdbd-22e814c99cdc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{61520212-54c7-4156-9480-dd92c1476bf1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aaea55cb-0b7e-4bc7-aa6f-6f3fe058517c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{a63e3401-23cf-4cba-a939-a6b133e3dff7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ce4a6a5c-9fb3-4b89-b869-7f3015e0f576}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{3148caaa-ab31-4d6d-a7ca-8bf37d60322c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fa8c8263-1ba5-431a-ba5e-fab5ba4519f9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{9593943a-600f-482a-9d3d-ed4059cdee6d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a37dd266-d220-41fe-b0f5-e4a324c65e15}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{a8597d1b-52fa-401d-ba47-a16069a46115}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8ecd65fc-aa96-484f-a2c3-fe64c199f3b5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{d292a2fa-688c-46d8-84d4-db85e3e4a49a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dce62d3c-ba92-4163-884a-8d74bb37f2ac}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{0d9e7ada-02e1-4ad7-bbbc-63e38d3a87e7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4d4c3689-9575-49f0-a46d-8207821bd008}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{940a00b6-f2f9-47a0-86dc-af37329b3061}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{56cd246f-769c-4f04-861e-52c73ff2cdfc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{84552020-14d3-496c-83dd-6687aab93f5a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{05e1cee3-82c3-413d-a50e-e6ec977d05be}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{d7d0d2ce-4b0b-44e6-9873-b13e07c763c3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ccc8ece7-11d6-43d1-83b1-b29018543e26}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{9cf79b10-a544-4dd4-86a7-242c2533e511}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{99272443-ebf1-4c46-98cf-7a078a2b27b5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{e0f6bb8d-a9ee-4861-abd8-7a7b98240fda}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4fac6bdf-e248-4814-ad50-5c18a41de7f7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{3293491b-5e47-459f-ae4f-0f9a543566d8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dfa8ffe1-6a7a-48ee-b80c-c48c66a77cda}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{d47e578f-d697-4255-8476-86d67c4f5587}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f1d8f472-6b43-4835-9c9f-1e06d9b89226}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{6444989f-ffde-4317-a5e0-d34a45c7a339}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{15a0b857-9eef-4640-9ec5-455cb78398cc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{b828f53a-e2fb-4d26-99ad-195145130238}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{953a7cb0-61fd-491b-b8c1-279cd814c8d6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{b7ed54d8-a138-486e-a349-114664dd7876}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{0d50ea4d-4875-4268-92b0-d5ca0859fa29}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{6f5c8ac8-585e-410a-9f7f-d3c50b5cba4a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -85,7 +85,7 @@ | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion> | ||||
|     <_ProjectFileVersion>14.0.25431.1</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoNetmtd</TargetName> | ||||
| @@ -337,6 +337,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -362,6 +363,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -383,6 +385,11 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -485,6 +492,8 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{e13faa94-c376-421f-b867-4c5535275306}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{327293f1-d0c0-43e2-88d9-6338c64d3663}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{014a2ad0-aade-45c8-a94a-348549ffc89b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{802ea8e2-0727-499f-a42b-36c4fb985992}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{84789459-38f3-43fb-b817-073ddebc42e1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1f1df6fc-0ea4-43d6-bdf6-67b6601e9191}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{b7976ba0-3922-49bb-a57e-c544bfb3ee08}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{20978521-ab21-43d5-9fe2-31ecade5cae3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{6686e891-8fa7-44a7-9ff9-0a32f55980b9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f8ec4aa1-d0e9-40b8-8583-0a9f13e61ef5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{2e4075ee-ed3b-435f-85cc-f3c5129068a4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{357e66ab-a760-4fe5-9ed2-c04027abf116}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{d6c148a8-0670-4626-9e30-dc5e6fb8a286}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{15c43f53-4c06-453b-bfaf-ea23efc5f75f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{12081d7a-41fc-4ab8-a178-d09b6e0444e3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{86661b65-52df-4c89-b1b2-18d1ce425dba}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{6dabfc40-72f7-478b-b9ea-c442b231f080}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0adb0116-c65b-4853-929e-ada17c6eb45e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{06a9859e-3c1f-4202-a2e7-bf71adeb1ac8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c17dd89f-9d2b-4274-b124-0aeb0a3788f6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{4843c85a-dbe3-423a-9b2b-9fd76c8c33fa}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4a6ce9d6-7db9-4a98-9a1f-6fc06e7f047f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{67208e25-3e42-4c55-9402-b717d6475c1b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bef0ac6a-9f35-4b7c-97f5-d538f387ada1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{f0b2df8c-bbda-48d9-8285-a1915fddfe41}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{327b7d17-6574-4024-96da-4d0679df4d90}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{98520baa-c1a3-4434-9a2c-8e6e25536f93}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4479ec0a-9ba1-447a-bcd3-d4f2f199e4bb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{39071312-dda5-4790-ad5f-11d8e5555cde}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{44ba159b-5e9a-4c56-81b5-5cb493327551}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{899b7866-6959-4016-92e2-f636e78ed44b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1581dc0f-aafb-4746-b6b6-34b4a5007ff8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{0c658dfe-ee5b-4290-a5ab-f8c68d855c0e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aeb30e63-24cd-45f8-b1af-75508d12dd6f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{80f3b0bb-ab22-42d3-a744-780824f89558}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4b37463b-0a68-4a10-9f91-9b6ad71a2390}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{452b370d-1920-495f-b358-1f2ef8eb3133}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{290e0abc-2fde-4545-8f89-c42684b4a0e5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{f8784f7b-f0a1-49ac-891c-122dd828b7c3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a57692cf-b95c-47f4-9e6b-2e37c5a3607d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{305a2698-16d5-437b-8d17-2bfc68f5670c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{433a9ed3-4cfd-40f0-91d3-d4ab058dc9c3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{805164a3-fda9-4523-b0d0-9a3634e079de}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9c6c1e11-3052-4be7-9027-00a81dcf7967}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{4029e229-c0ad-4661-b624-cb938273cf1e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{cf08a45e-639e-4edf-a548-4a23f88e5bc3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{0d65aebd-95f5-4c1a-8238-d0d582379cdb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8e9e0e9d-0904-404a-ad84-94428cc8f08b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{5295034e-8fea-4065-9074-d85d1e2a85c2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{42dde18e-1b9c-407e-8765-6d6510a7ec8a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{b42bedb0-5e65-454e-9986-10c690e2e393}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{12a06421-9e81-4c96-884f-b4ce5271a4bb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{988ad0f5-aac2-409f-98bb-56524ce7ae3c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a722934d-e726-48d5-ad97-b0111b91adf1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{fded5aad-b84e-4747-b950-64a416018826}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{537bc1f0-021d-47b0-8480-dcb5a751c60b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{6aa30fba-2a41-435f-aac4-429e121f66bc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1d046918-90a0-4782-9cfd-10a444f0f6a9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{165a913c-5c2a-4e41-9eab-1b993329f8b0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{02032d59-badb-4c20-a36d-397442e3ccea}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{8cbbf831-0b36-41dc-a778-544cd564bc23}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{109e5c7c-82f5-4130-ae13-99f286b33339}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{9e26c752-c056-4441-8048-e87ea2d5f01b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a509c79d-8ea4-4a92-b2b4-fbcda8e195b6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{adbf62d8-e005-4ba4-a42b-5b209ceb409d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{575c78ad-d3ce-482e-b1bd-0565c4347ddc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{cb56d3a9-3e95-492d-bbea-76d337504eb3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9abdae83-305a-4029-8ddf-851a35ff84c3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{530bdd12-0e44-4581-8280-e781b1386685}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0c026b6a-aec0-40d8-bdaf-8b5bdfcf400f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{41bd4080-3b50-4efc-bb2d-393cf8196d4d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6faa64c5-ad49-46af-9440-7ff992a42edc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{b1530c78-b818-4305-aa81-7ce8bbaa971d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f71f93c-171b-4ce5-bd80-b358d93f1f14}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{fb5d6634-ac71-48d7-9274-fd12348f2f04}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{12a46f2f-a165-410d-9c0c-1aeffa7f59f0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{7ebc262e-b275-4947-90ad-12609179bf76}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e9d2a8fa-42d3-43ac-aef0-b440a6aab1d9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{5a880ee9-edfe-4db9-8268-0c78afbd4709}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4550d9ea-842b-4973-829d-45aecb1dd879}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{253769a3-0511-439c-b90f-41ff291ab983}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3b2ccb96-8122-4ff9-ad9e-6482c3dba58e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{3d057e1e-ac64-4757-91c5-e0d50fef4e89}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{55492259-88e8-42b8-8073-306c3e70be66}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{8bce73c2-faf0-4c48-9fd1-0ec39371eaad}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bbec80bd-f48f-46ca-babf-2239a22bbf46}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{ce839f95-b667-462e-9866-52413285fea9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{21493a26-7e65-428c-8435-bf0c68dca5d9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{324d6c1d-06a3-464f-a8b6-5fd016cdc7d5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2eda151e-32b0-48b3-a744-dbcba43de5a7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{6e678ce3-5f43-4ce8-82cd-be1b92a04557}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8a2c0cb5-5663-4cf2-bfb4-68ecdc2143b1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{03208067-3290-4b25-bde3-21eed0a3fbe4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fe9de743-562e-4919-baed-582ab7d4a412}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{14a81c8b-a940-4569-8daa-e8d8d218dd5c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4bae7e10-9878-4225-a851-38919129cf51}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{0c2decbf-0f48-495f-9fdd-5ed2a6a3b7f2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{4844915f-4d8a-4d0c-a90c-5505abcc8464}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{3543e216-de43-4d98-88cd-f0a2da4d6925}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -85,7 +85,7 @@ | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>15.0.26228.4</_ProjectFileVersion> | ||||
|     <_ProjectFileVersion>15.0.27428.2015</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoNetd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoNetmtd</TargetName> | ||||
| @@ -337,6 +337,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -362,6 +363,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -383,6 +385,11 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -485,6 +492,8 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{aac20767-0655-447b-a1e7-ad68af5e70c4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{eb0d3175-49a6-4381-9ba7-497a1930d5ff}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{635ff895-975e-436d-b52a-f5f2e08402b1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0bb81fc2-2c02-4cad-a898-0540dfa9494e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{32f72e89-e863-4b4d-92a4-370cb580e81a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{95ba845a-f0c5-49ce-82e3-2556943fece3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{633a0ab0-5ee9-4341-acf2-b2f0afded777}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{11efb6cf-6685-4fd1-8992-e43266c4b444}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{88fc10fc-1bc7-4d27-b020-4b717e9ac766}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7ab9bb92-8829-42b3-b5bf-867e33de961b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{c13288b9-e65d-4c77-b155-c0d4cf46c86d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a65d7c8f-8318-4087-ad00-4957d99bb20c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{992fc706-756a-4f56-8f27-6525d94f54ef}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{390b3ae5-8189-49f7-a8e1-296164539f22}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{21f7c525-0d0a-4633-9d9b-0880a1d69788}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7e1f57ae-a74d-40e2-a651-d227ff6a2361}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{db8bde52-f0ed-4558-a9a9-ca2c78226b20}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c2db779d-db53-4d24-b532-949f587bf4ce}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{56e739a8-94d0-464c-854a-34c10a37185c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{812176c7-7584-4c74-bf4f-e2f5b71f2d21}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{f877b7f1-7f00-48f7-8e33-7bcde4cfbc37}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b88de86c-e0cc-478c-b935-fc673005c628}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{f8b0fa0d-685a-4a59-aff5-07099b95b0e0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b58bd750-ea42-473f-b998-612d814cb7e9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{958a5a06-6dad-4539-ac8b-c67517dae842}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2ac21899-fa95-4964-a440-4c526492e32f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{e0135028-5d2a-4307-b708-73783391d365}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8311a2ab-aa08-45b0-b875-5b7822ceaa0d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{a48db34d-b95b-4f2b-9090-dd8028975efe}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{329667a3-6240-4fa1-8716-65121592ef8e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{d9ae00da-0e0d-4373-8682-7c4fbce11802}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{162dc987-14df-4d67-8d70-ee1c34d747e3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{c6844c29-f217-467f-932b-ee30eb57bbb4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f1ac9eb-90f3-4720-b8e3-132791477e0a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{a8a368f0-b065-47de-a382-39c24e7fdf73}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6bc43e99-8761-4f02-8f26-a4f5adc57aec}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{fa57e930-8036-4ce0-8062-7896e1455605}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{64be7987-554b-4692-b081-8c65c2dbbff5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{ec664dc4-b696-4c04-846f-7922f589fecf}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6dcf8c06-856f-4143-90cc-5d8732e5f426}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{fde4d486-ad10-471f-9a20-64ae85819cf6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{eaa8f79e-c294-4009-b832-0ddd639d8ba7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{36839617-9c2b-45ca-99ee-26b2eb99553e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{83c19ec4-0444-4ae6-8742-77076804a962}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{1a950b4d-a441-43b7-97c1-a24415eef8fb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d7fad3e1-58bc-4c71-9a64-3fed964f5b35}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{68736ac4-5f3c-420a-a048-784917418118}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a387db79-dcb4-4afa-98f8-9fdb0891188c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{31e5f98c-29a5-40a9-bcfc-01c1dda2dd3b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c7504644-bc5a-4990-943c-46dce27988cc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{565b7ecb-8974-405f-9649-4c862411d275}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dcc830b4-88ec-4a64-96c3-6c031d02876d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{65ee0d87-9e1f-488a-b401-7555cfa50eb6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f42c974a-7fd3-49d3-84cc-e5724a1c7eb5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{23e2c192-45a5-4e1a-a101-e2bbb8495478}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{160a62b7-b037-4919-9774-e184d78665d3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{90ccb97c-9172-4b62-83b9-84e20871640f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f69dc832-321f-4c0c-b74e-8e511aff3f0c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{43e68ee1-5d22-4000-bb52-bd015448ce3e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{af5a3f1a-80b7-4ea9-88b7-89ddfa70f2d5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{51f6959d-75ba-4c41-8d62-5880fd04ff8d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{55446d87-e1e7-415c-aeca-75e0f77c5878}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{21510b32-9ed3-40bf-9c51-febe9aff37bd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a7181a07-86f7-45a3-a8a1-b691d45db670}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{0a56f698-6901-4547-ba11-99aa677f9fe5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aac3e923-7695-4ea8-800e-f25fafa2c352}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{a4dad996-529f-412f-8349-ea9289dde45a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d0905a38-cfbe-4fd5-9964-7e65624a0954}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{d69b2ba0-7d11-44c3-bf9e-a62298d9b3dc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{14d6f18f-9d20-414e-acc2-1a80572411dc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{66b37fb3-3828-4183-ae08-a3b37ff79664}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0f64bbd1-ed96-438d-abe8-622713685ac4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{b8819de8-ea10-4c9b-88b5-edf315b63858}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bd78d35a-2303-42c7-bdf2-8fb7e55d90de}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{83bedcc4-67d4-4da9-9b07-5b23af8e1083}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a24bae6b-3b5b-481a-b3ac-66a941350410}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{fa4f6c29-fde7-456b-9a52-1a83c5c6c4bb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b2845e81-fd8d-42b7-8a05-cd10206f9157}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{a9a7f484-63b1-408f-8d39-c2c6d825c49e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{12f7bf7a-e22f-400b-91cb-fdcf4e1e33c3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{5cda3e90-26ba-4bc6-b0f8-c1fa56255b10}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e1c0c1c3-637b-4ebd-9988-d7ebfc47d4bb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{79241a49-6578-4078-a2c8-263c2b81b82f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{95dc64de-0ac0-498a-af51-d760848c6af6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{3fb5a0a8-6466-47a2-a4c1-56ae6e923f87}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f1236e38-4379-477d-bee5-c2f6407abb6c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{de998a84-7e6e-44aa-871d-6b936ed742c2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9bf079ae-cd56-4a5e-9a20-5dbc973e11eb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{a1a1f1bb-93ea-4031-9349-8b406ed23c2c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{31c03ace-26e4-4075-8c94-ece8a93942e5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{3392428b-27ad-4a57-b37c-4c56ddc44805}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{374a50f2-0955-4fa7-a661-5f49fef1241b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{8d3c098e-32bb-4449-bf92-3193a12d98de}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a628ebc3-6be0-4c0d-a67f-43c02d621393}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{1275f026-6896-450e-9f17-30c160bac0ce}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dadc280c-18d4-45a3-aca6-aa0ad4d73f8e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{3cb9856e-0bda-45d2-a61d-bf3e50356423}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{18903566-9d02-4c7e-bb5a-27f1c94a0352}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{2f7bbb60-4d9d-4671-b5cc-f1b6164f745b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -944,6 +944,33 @@ | ||||
| 					RelativePath=".\src\OAuth20Credentials.cpp"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="UDP"> | ||||
| 			<Filter | ||||
| 				Name="Source Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPClient.cpp"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerParams.cpp"/> | ||||
| 			</Filter> | ||||
| 			<Filter | ||||
| 				Name="Header Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\MultiSocketPoller.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\SingleSocketPoller.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPClient.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPHandler.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPServer.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPServerParams.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPSocketReader.h"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<File | ||||
| 			RelativePath="..\DLLVersion.rc"> | ||||
| 			<FileConfiguration | ||||
|   | ||||
| @@ -379,6 +379,13 @@ | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"/> | ||||
| @@ -481,6 +488,8 @@ | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|     <ClCompile Include="src\OAuth10Credentials.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{634d2074-0eb4-4c20-ad66-d944e51f6250}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3ecf1d29-df14-4352-a8fc-35ed5029fdbf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{463403a6-4b5e-4ffe-ba7a-06f8c05c2e65}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6e76bb65-4285-4eda-ac8d-79a05b3bc3b6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{e25a2924-f25b-45a4-b94b-09119b73c19a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e2b0bb30-ac70-4d46-8c17-0a1ec9bac235}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{53f52745-29c7-4b46-b210-33089b01d463}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{92800a98-bbb9-4053-9ef0-25c4dbfc8289}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{948101c7-4506-4537-91f6-b41562a18856}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{814cdcfb-1bda-40fa-aa03-198cfb086014}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{0d602551-dbd3-4ed5-95fb-4ee89522d53e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c947159a-8794-412e-ab75-b2ccca14f651}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{58214e21-f187-45ed-ad2c-66a5eed2812e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ceefa62a-ed53-4ece-963b-3ca1ebecd6ef}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{5a9da57a-cfb7-464f-97a1-9370bc8a3f6c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6a90ae2f-e7b1-4389-97a5-96afbeb6d6d6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{7d9860a5-dd12-4d45-90dc-d6c1af559e88}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b6f1b95f-7e7d-4171-b6af-ca324038462b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{956ee141-adae-4bd1-a2b1-18da077a53db}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b8580415-78d3-491f-8bea-0d0465ca431b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{dda88a0d-ca13-4a56-9ace-a12a98e44193}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{58cb6b5e-6b66-4c85-87a7-ffdec46a259f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{c575b5f2-3880-4fe1-adbe-4398b1c62a1f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b9bb483c-ded1-4c5b-90bf-9cf443e2ff45}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{549d260c-a2be-44ab-8b49-15dc58401d2f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1926c64e-2c87-4013-92b7-3357548f7986}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{802b47c1-e483-45f7-aefd-bac072569982}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{41b48c57-248b-4d6d-aaf7-6acf7825c6ac}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{22ca7373-40f8-4add-ba86-f4cc21078765}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{defc6aa3-7892-403a-9aa5-1db5ad423a39}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{c1f77065-ba58-4022-a718-5a6369a7dad9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2901253d-0e54-480c-8d1a-c4eb70847409}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{69eec26f-d2df-4a5d-92ec-63f2f869f141}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{67cf2e74-21c1-446b-835c-41a947272b7c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{a63f1541-ebc1-4daa-8321-5edf7224322a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7adb2ea5-dcca-4fa0-906d-f411fcec99de}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{dbb43662-c2c0-43b4-bca6-b5f49533654a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{81dee9d4-5b7e-4c8e-bff8-95d3a207f204}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{638dd285-6627-4134-a42f-c425421f0254}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ac483e49-b7d1-4761-a2f7-f38dc3fa5605}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{f662fbb3-32b8-498a-b862-93f3d8283017}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2cb341a1-641a-4cd2-8484-83c8a283fe12}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{d252397f-4c59-4597-ad3e-4bbdb9c7caf5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{08cd7ef9-b68c-4d41-8883-3331b478b5dd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{28b839b4-cc8e-489a-8f5a-7dd7539f3991}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e2f3947f-b4a0-4239-8a1a-4572564c6e4a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{c1ee1d25-4a7b-436b-9653-34da9ac2be95}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{193551eb-3f9c-4ca9-83c3-ef9beb4edd55}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{41766319-105f-4ef5-b34c-16ab0ddf5dc5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6dfc9ed7-6dcb-4b8b-a304-15a10aa92c99}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{32dbff4d-7640-4876-b6ac-43ecf710e565}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3650b621-e03e-476b-ae5f-9c27af32da23}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{521ecaa9-b59d-4997-8300-a1654360d697}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1badbde3-67f4-4198-9ea6-02f7c2a66199}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{aa07204e-73f5-4f6c-b2e0-9e8a4bc3ed4a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ec469819-b26b-4dc7-b1a1-ace1e1e9d14a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{40b37528-b6f8-430a-ba64-ed5cd19d4ecb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{02fe2995-2549-443d-8f3e-e36787355f41}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{69825d1b-553a-40d3-97ed-41f735623d05}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b400e6dd-76a6-4579-be33-b78b36cec0d2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{b337390b-dbea-40ba-bf6d-31ab102d002d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{829b62e5-047b-4173-b1aa-01aa9d659783}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{81dadd50-de3d-45e8-80f2-262b3a81fc87}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{125ee94d-72f8-4d2a-9e3a-0b1ab6e64520}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{9c81f5da-db8f-48e7-9120-72d9728f08b0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{87a3b48a-fe24-4370-a8b3-debccfdbb7e7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{1960a8de-41d3-4e04-aa98-e9ad17dbe6c2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{356eedd4-478b-44f9-9bb9-c058b2ca3f7c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{f47d2889-4745-4694-9c9c-76ea35156486}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ab0b4a30-f563-4628-b46a-6233f5788812}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{231ea9d4-7d83-42f5-8d49-67ec3036f4b7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{61a2bdc6-5ba0-4118-b39b-b7abfb60d81f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{c34fd142-fa23-4fa6-9fd4-ad095438fdae}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3104c162-2705-4086-b3e4-f05d2e27abda}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{632d45cf-0d31-44b8-9705-b3299c724d8a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f871fe4-633a-4080-8a9d-2d23356c637b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{953b5941-d6a5-475a-be82-98a01c5b2a97}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{301b098d-3705-465b-a451-c989d8c4eef6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{34b81470-af4d-4948-b35c-d208f494041f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{89e37240-e89e-4b8e-bc26-edcfc677fb11}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{b3e74cb3-2714-46c2-a6c5-d9d9f1ecdf35}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fd942a3c-35a8-4542-bf2e-865ced2720ae}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{3719e3e1-af83-4384-a84e-e438f0472b0d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{73e6202f-5739-4d3f-8dd0-bbe6ef88901e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{781c45f7-4ea7-4cef-9045-5bc1304af444}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5f5fc393-74d0-4e28-b4c9-f11ae53ad8f1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{38f908d7-8dac-46d8-aeb3-0d96c37858f1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4342bfae-fbb1-4d63-8b4e-d469fcd1d711}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{07e9de6b-6403-4c92-9e81-62cf3192f9da}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3e2c31a9-22fc-4a6b-9719-2158535f366d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{59ec7036-a39a-48dd-807e-c0edaedeea3e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{75085c62-b3e4-4cb2-b77e-cd7f4e142878}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{37a46160-fe0a-43d8-bed7-b0290f0c2028}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7e841082-bddf-4cec-a49d-17b8b67f6825}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{aff50375-d1a5-4a5a-9f65-66e2d6d89df0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{97329ab3-96b7-415a-82f0-b6b56a5683a8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{a29f7b88-8b7d-4e42-8834-2bc04d1a460e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{0d72045d-b073-4fd4-b630-3384a62b8ebd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{21ab11aa-72f6-463a-b42f-48408073df57}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -85,7 +85,7 @@ | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>11.0.61030.0</_ProjectFileVersion> | ||||
|     <_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoNet64d</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">PocoNetmtd</TargetName> | ||||
| @@ -383,6 +383,13 @@ | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth10Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"/> | ||||
| @@ -485,6 +492,8 @@ | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|     <ClCompile Include="src\OAuth10Credentials.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc"> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{5f56b373-556b-4e44-816f-6e44994ea10e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d99e37a4-e329-4697-9594-27384d023930}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{96e67995-4da9-4409-9096-585a558d90a4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{02691222-f982-4c83-8abd-753ac8a5e421}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{70e4f321-9ccf-4e0d-a2cc-0276bbd32593}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b2485ee7-50cf-49bc-aec1-327f7769eece}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{232d4d47-2be9-48c0-b304-355c83a0b18d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a7809dc3-1483-4e95-9223-3a09a9219145}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{2cd1e9fd-6892-41b9-b7e1-3a082cd7bbee}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{603307f4-b176-4e06-a06d-8a73aa1c1aff}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{9440059b-2c4b-41ed-b428-e0b18f2f34ed}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{60093744-df1e-497f-9b60-6e73b8c6c1c8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{6f17a25b-0f21-43eb-a303-b0f369e7fc2b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8bd17f97-3ed3-4829-9cad-2aa7d32d2203}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{97afe09b-520e-441b-8559-79761f188c34}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e2f52dcd-0109-4241-8908-84f5e10d03c0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{8a213149-c4b2-4422-8dc6-a65a8144924b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{489d42e8-0b5e-42ec-8779-ab34a622d873}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{19589d84-90fa-48e2-a09d-b4aed1d17d41}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fe93be7e-07b9-46a6-89e9-4c9e26fc1fac}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{c5826a10-3f7f-4c85-9276-b29383eb1650}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{03122b20-9e92-49b9-9840-b5d099fe185e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{846750f8-9c20-4cc1-a809-a9b0bb65c4de}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{843e3cb7-5ba4-4516-84ac-b82651c65a0e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{7bf420f9-7523-4039-ac51-b21135c1de73}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b57ff255-d76a-4bbb-93a1-fb61e5b81fd8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{21e655cc-6f88-46a8-b3e4-53c78c0ee3d8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2e538433-80a9-467b-bb30-a5bb2f871573}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{20159af0-aa78-48f8-b7f8-0ea48d80fae2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{65871ea5-bd04-4739-9bff-e8598a933cb2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{285de856-b318-4ec3-9e55-b5755b9006d7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1f860b22-d8ac-4b82-88d9-a5c68a2e70b0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{12a6a3ac-5465-431f-9d40-8b61bf73304f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0cf849e6-d54a-48d4-8382-bbe9c52ecda4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{55bb9474-8d81-4015-a695-3ce985c674f4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5ad28dd3-eb3c-423e-b702-38453495e682}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{a12e5c3c-cc09-4b8a-a778-e8b49c8a9d83}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2d8539f8-e510-43f9-a127-d9e0e5b4e935}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{f00796e8-365f-4194-93af-76c5cb82d1e4}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d7a8df64-eb73-4845-8bbd-ea51b73efafd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{a6471d8e-4bce-4584-b488-941fab3fcce6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ce12c2fc-7ff7-4b1f-89cb-60e2a4998b4a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{3e0384f8-79ae-411c-a5fe-83bdb0afe29f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{73d45f0a-1444-4a6d-ae6c-37d0a1a23340}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{5f217b69-7bae-4f51-9a84-9baed9b331e7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e92e42bd-6a09-4cd7-b236-ec057bd73c65}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{05e53265-812e-401f-96b8-425623e6ca98}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bab1db03-d989-415e-b87e-9f61610f53c8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{e5e165c4-0bac-4069-81dd-48e738ca0e90}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{104374fc-fa85-4d17-b8f9-47c9be4f14b8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{a36882b1-5136-407f-9eea-c5280e641f13}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bd72b134-9e98-4672-981f-572dd0ab98f2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{7affb99f-e294-4822-a712-79b7f6414bbd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{cb067b20-5d34-4381-8a80-52f7e19139ce}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{c066dbd7-a314-4592-b2ed-40395bf86e91}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{faf79489-1cbb-41a5-b362-d2620a3ce848}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{b12a014a-4781-4226-a1c2-457a1f8a25f6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9c4ab55b-4a54-42a4-aa00-536354eeccf1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{244c4495-dce6-4e93-9d72-ffcdf801fd63}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f7df8892-95f1-4eac-b4cd-3baab95bfb09}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{71ff70d3-4151-493e-805b-31eccc6d36d2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5a6eea3a-b645-43e7-9fba-240d4fb20634}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{54a8df04-7019-4148-9682-b828916e43cf}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f54b79c6-1bcd-40bd-bcb9-151cc9b5a63d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{a875c072-f744-438d-a9c3-8a011c267fe6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d381c84c-3634-4f82-8051-9f0b0b89ffb6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{6a04a24a-dc6c-435b-975b-03d6f78582ed}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{95def0b7-2a7a-43a9-a1cb-8009a4440e76}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{318b905b-85b7-41e2-b458-98d1f1a54eee}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f658b6e-b7c5-43d7-983e-4f8ee108f0f1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{7646cb78-6248-4d3d-a748-cd13766f4303}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b7cacee5-d40f-4e38-ac49-e7800d09e7fd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{f64537da-0179-4468-9ecb-b7b0173ce74e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{557006b3-3121-43f9-b28d-d387d97ecf4b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{1d94b7ba-2376-4fce-a32c-785440767c91}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aebcf1e5-2c35-48be-869f-17b0d9e59ebb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{63089154-1dce-4366-83e4-50215918b4a8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ed180977-b89a-4c70-8f71-1a2101d5a934}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{3ae6ad3a-4437-4275-95e4-6e8368b40d45}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{455f76b3-0ea8-4c5a-bb08-67ae9ca7062b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{9ba4405d-3474-40e2-a47b-b305dab9d88c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3014291c-c2fa-4903-b83e-f90cdaba09de}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{1b3bd47c-0202-4a1e-8507-9557ab695760}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7782bdbf-94d8-4dde-9a7e-d6453c3fbcc4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{2ff1b24d-2cbb-4843-be9f-b4cdb5496ccf}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{449ed83d-4727-4401-8bd2-3b80a00e4095}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{2f29a313-0df1-48c1-a5e6-1cadcae681ea}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a859141c-9435-47b5-bb76-45eb7cf8a6a4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{48309cb4-84d1-4e1a-9544-ac22341a1549}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f03bd706-ea93-4c8d-8e65-6f9dcc025da4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{58a64688-f540-420c-9a5f-c14df18cd2b0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0276ac4a-2ef6-43d9-b256-4446420d1211}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{a9808d70-5d4b-4d25-8684-f97bf9f28a92}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{778d6ca8-ee88-469b-a6c7-c91debe0d6cf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{8d82d270-fc18-487c-9bc6-1a7fd35933d8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fe76a7ef-1826-4121-88fe-f4d09b0fbf9a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{b49822bc-4aa6-4cc9-8cc8-027e3787458a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{df54e47c-4819-47c0-80c1-3f3223040acf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{b5bfdb6f-d850-4ba1-a6db-b8ab35000cb3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -335,6 +335,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -360,6 +361,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -381,6 +383,11 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -483,6 +490,8 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{d793381d-e52a-4be1-b114-935577b22fb6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{931ad266-3c66-4ebd-b27e-4eda7ace980f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{b10aa5ae-0d2d-499b-9bf8-bd3c0ad633fd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{66f7ca5d-1ba2-4818-a22e-264c33ab9778}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{62671b12-1abc-4fb3-bd51-60426795ae05}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c3edc8ae-c3b9-4088-9d3b-fedf548f3537}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{589b70da-867e-4a1c-9b9a-6308c8194fe5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f72ef01c-4561-444f-9d70-6eb62308c750}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{cfa6e673-f174-45ab-add0-90f82d12fc4a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a0726cbd-d4e5-4065-acd4-3434bf80d302}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{84b21054-f687-4007-af69-a939f8dfefff}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bd08bf41-27f4-46ca-859b-5bfe501ea6be}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{cd97f248-86c4-425e-be74-17f7f7c5e4d6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{01e3591b-4889-4ca0-8c1b-bc18fc8640c6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{842d3f60-8226-416f-9a58-3379620c8072}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6a5da09d-abb3-462a-b70e-d0131749a65d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{2caeb2ec-5b20-4f25-bf56-3b1c46579f93}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0815bb2c-dcfa-4e96-b0d6-3b4839a9724c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{7b2f1809-f765-425a-b85b-0680844efe95}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{839cb5c4-f9aa-41f8-9d28-82b4c70aee25}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{f95d777c-0513-4616-ad73-809518be9335}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1da34696-9f51-468c-b15b-c0e8664f08c5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{8f84d5c0-555c-4e2b-ab95-893554db4bb6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c0cc2069-49d5-4234-9cf5-2d6d78f3b55f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{3eb75081-b071-4756-8779-a161646fb94a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{81053fc5-e24d-4dc1-96b0-c92097dc597b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{9353e41d-8399-40b5-849d-1656738374ff}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ca8110a1-89e4-4b27-974e-67cc7cdb5826}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{06921133-2e92-4bb0-b727-bd2ae2ba5c45}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{22a42e32-e87c-4057-9150-0fc91ca74c6d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{e00832de-fd52-48f6-bb31-ac5bbe089a21}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8730d65e-bf26-4e94-a23f-a9a257d5daf2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{29968123-0afc-4e59-a17d-5b174817ebd8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3339ed1c-e960-4c14-8d93-132b0f0d2ef4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{f73a1f3d-f05e-43a1-aabb-546855f62795}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2354143b-8018-4f1c-9ffe-28b7b02845cb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{412ce361-d8c7-49f4-b69a-f8b9cc487dc0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{942212c0-6c1a-4c85-a82f-bf43b15565a1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{00e92899-4431-48bb-a1ce-ef46f5975fac}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8d3fbdf6-3f5a-46db-b6d7-e59fab646ec1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{238188e2-4b3e-49ce-bc6b-a1412077c9b1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1be472bf-562f-4536-b715-2f02546ee1a3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{8cece644-fefd-4a34-add4-07e1559e6311}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7aa3ba1d-d514-47db-be8f-8dffb8b7e4ff}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{086aefe1-6f0d-4d9d-992a-48cce7966550}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4f733e64-4eeb-4b74-a6b6-107ff369860d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{c32dc6d6-4d1c-4d01-8b4c-6d608a6ef7e6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1174ecb3-a68b-4682-9ca3-4e0c953c0a1b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{c21b64f3-0b55-47bd-a7c0-5e57b9963476}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0825c268-4532-4206-aca6-9960f90aafb7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{a44e5b02-ed0c-4dc0-9809-0b408cc04cb5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e5a112e8-b2c0-4c2c-befd-c1276eb2eee7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{13408722-e641-4ab3-9416-642e52472961}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a8faab2a-d2d4-4a4f-8787-470bf6f781a3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{ff62509a-0532-4157-b0f1-34011d0d2160}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{003e0fac-f29f-47b2-a390-8197b6a5b92a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{76648b63-cd72-4010-a1e6-0f68e391d213}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dcd62c48-7aea-4c06-bf76-b4e9d6fe689b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{3abe382a-6613-4f22-9eb5-34165acd5d1c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2855ff32-fb29-404f-906a-9af115e7d854}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{846ee1ad-1f67-48ae-b683-9e9b3d0522d9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b96a84e5-c45c-4515-8da2-1ddfa2a1469f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{25c2d553-e719-40ad-a62a-566dd4ee7126}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{74cd9510-478c-43e1-b745-4cb17e81799a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{ff2b48a0-0e0b-469a-b30f-9a719a4998eb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{021581e0-8de3-4b1d-b0cd-ff46963936c9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{30d8f778-f9fe-45ac-8a03-27188ea98ad0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{edb0f9d9-9018-4afe-9fdb-5bbb282d22d0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{a0f33d50-227b-46cc-ad85-2c641a0383a2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{10fa16b0-df42-499e-bfb8-730146debc60}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{87b4e91d-748f-4f2f-923c-17a5fc954381}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4b0bdfb3-161c-4665-aa11-74e4b69e9e6d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{4159a203-b013-4706-825b-7bb5b4fd3c68}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{05e5176c-b25f-48f2-a990-14dceba99608}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{0720cef2-bfda-4ca7-a299-c5d43dc9014a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{dd09c611-b4a1-4605-b11c-4c1f2806b98e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{39c8a605-b6ff-4fc1-a585-a73bba457f39}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5bdb6e63-975a-4d35-8860-7d0b9b8b433f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{61dbd680-e8eb-4e1c-b814-5ef8fa6ca9e8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e7730f2b-b7eb-46bb-a2a0-46c4d62f2360}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{8cd2ae23-4297-4223-90cc-cf6ade33b9bc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{363985f4-df96-4aec-a764-b3bdd280218e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{88b8f574-352b-4963-a042-95b8d8d836eb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{39b84c59-e79b-4cfb-87a7-0e4cc15ec022}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{1f505612-23bb-4ab4-a5a2-1260bec1b68e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{d2a734ea-b5df-45bf-8f5f-260b94de4eb9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{5c2822ff-d9f3-408e-9e29-69182ee9289b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{28f3ed68-456a-49d0-a2d4-5409afaabcb9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{8595d6a0-c3a5-4d46-ac64-4e0f415c974c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e8f017ed-0dbd-415c-9b14-d41dde04baae}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{eccca1da-4cb3-40c2-b5c1-222dc60847f9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c6ec91b6-061a-47a1-8462-0ffda32f219d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{60b9db26-d2d0-4cee-a699-8dde212cc2c0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{78a8c8cf-ef98-4925-9275-d80ccda2cf4c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{edbb27bd-7567-42be-adf9-7cc12ff5b521}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b6a1fdbb-7983-4e80-96ad-3d0878e2890f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{fc306e36-4d66-4737-8db0-0b8e2c21989c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{46e35b39-ca2a-4fb6-92d0-120839dc63b1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{b5c32f96-05c9-4b20-8f53-cc6baa427c08}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -85,7 +85,7 @@ | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>14.0.25420.1</_ProjectFileVersion> | ||||
|     <_ProjectFileVersion>14.0.25431.1</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoNet64d</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">PocoNetmtd</TargetName> | ||||
| @@ -335,6 +335,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -360,6 +361,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -381,6 +383,11 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -483,6 +490,8 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{572a7c45-7da5-41e6-a245-9825a8bce416}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c94a716b-53e1-4386-9dd9-c34b92252f38}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{26c36012-06b0-48d5-aead-fa85ce5456e1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c19f980f-ac2d-438a-bd97-e0b5e5fa3fab}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{454a3c9f-6a54-48ee-bfb2-8e2edfabde87}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{16872e64-b64e-4a72-8620-9afc7c75797f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{5702a9a0-04ef-4649-a989-d3836ec6505a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5d667a8c-d9b7-4ae6-a5f8-62136279d936}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{3a9ad8b3-dfbf-40d5-8efe-98c49ed92dab}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{28933fe5-51c6-4d78-b5d0-684ec2d1f912}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{81d1a49c-43d3-49b3-a82a-8954c5d3122b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6c4d7854-3581-414d-8bad-50a448dab5ea}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{a598334e-37f7-4569-ba95-2c27a8a819ff}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5ffa2a4b-f0fe-4276-b54a-247336b7c9b6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{a5ba0e57-cb82-4e96-9cb2-9905e65ececb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c536b97b-2898-4ffa-bff3-c994faaaa13e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{2ad77310-465a-45a3-ac0a-e835f431ffa1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bdbfba26-462e-4894-837b-adcef804398a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{54e40ac0-ef22-4ba6-bf9a-254582c7610d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{948e8e1e-0de5-4cfe-9ad2-f41c6bf38307}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{ca1f3ccd-7fcb-463c-9082-505134fcf001}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b763091c-4383-45c2-98f8-e0e9e78e00ea}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{d2855f37-1e15-4c78-96b6-c03cb8221849}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5ece25a2-9b25-4d2b-b2e4-bfdb84de3429}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{66234b30-77a3-4792-9e44-834b7210eb22}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aa325e18-d972-4788-a35b-c5e05e394c70}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{e4d52904-8772-4d44-ba30-19b1acf57f22}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6b9bc75b-b771-450c-9603-df9f3039ba61}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{ee62c23e-f534-48d5-8366-9ec3496afe92}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e0604263-fa12-4325-a0c9-8f16d6e4e8f8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{eb25b565-5bc2-44df-b9ad-24ee4ec643b2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9f455320-229d-43ac-9563-8c81e24b5948}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{484a1405-0f70-4e4f-b5b9-6935e1e9094d}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bf7573a3-4801-4c8d-b633-ce85114390b0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{3126bb62-8060-4c90-be29-69c1f0c297fa}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9f56a585-c7ba-4f23-b887-ceb2674fbd3c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{c7b17268-a9fa-4338-a236-118b69247461}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b58373ef-eac1-4561-8e39-928b53ccd21c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{a2e6c69b-f917-4ee5-9347-60d3f4125adf}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{939beac3-2438-4458-a10c-4d341d0117b5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{220af5fc-79e0-4a5f-983f-a6d5db6df0f5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{55afc085-6e69-4d34-957a-1746662233b7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{981531d7-1bc8-4576-98a7-c1449d05fafa}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c82e6404-9e54-4134-8990-be4d457a0def}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{f41afed5-7f39-4177-9fb0-d51d8b94e3a9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{942711b4-9e0e-4bcb-b38d-3766b8b12730}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{bff5a89b-6dd5-4696-af9f-1bcce957cea2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a32b91e8-e9d3-4e62-8beb-60bee2d318f7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{d92ee96f-b606-465e-ad5b-5cbeb5e45f36}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ccd8114c-f8e0-46d7-871b-f4aa40c2199b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{bad9b007-3e1c-4c84-97e1-cd83c6e302ae}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1b972912-7b3e-443f-99fc-34c009860e55}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{0717bac8-1f48-46f3-b920-9f1138d33da9}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2278dca2-c9fc-4411-9c2c-3281182b47da}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{e978c1ad-8625-4556-bd29-c829ea3656c6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{08727dc6-16f9-4269-98e2-9f2fe2559705}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{61408b0a-c532-4ec4-8ae1-3d343287f67f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{855f886e-a191-4caf-b439-111bfd4b0212}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{0d06b32d-daf3-4656-aae6-1ce4e0553def}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5d0e7adf-887a-4e66-a16a-6a7ebd1f092d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{a7ee7a75-6e88-4743-8538-0544a9a4dacd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{57f71f31-57d3-4b50-8454-6eaef8c39fc7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{67256a36-5629-404e-bdda-00280b4c39a7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2f699d4e-404d-4943-8d3c-c7b402737060}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{5a720884-2a6f-4643-ba1c-e4ad8a2656ce}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{794900a2-01fb-4815-8f4c-2eef95b0b5ab}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{4ec0d94b-38b8-4418-9bb5-e36d32208a0a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c86e3328-f294-4455-8f6f-8415f30e970b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{152cf4f2-aaa2-4eff-bb39-a207b8454ffe}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ac76352d-9d0a-4d51-8951-c21ccccc4ae3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{1587a1aa-507b-4206-b9eb-d4f354d6f91c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ad749fee-ac21-46c4-a23e-b87b9cd4f56c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{2e355966-256f-4002-bcc0-1a7736444f8a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{88070294-2185-4d6e-b84b-eb8153fb3498}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{bc46d662-a42d-4f59-babd-990286d6e7a1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{daf8e611-43b8-4a52-833f-843d571431c0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{247f2a99-67f7-4f4f-b737-e805295cec47}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{db848d2d-4cc5-4223-bf4f-25e1af700caa}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{68aaf8ef-ed05-4ca7-a211-366725899ff6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6f625173-d3f5-411a-825b-f910fb06631c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{8ee4b537-4645-4cab-a3d7-18d02f148813}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{2c658be7-7e1c-4b7a-9611-ffc18c0cef15}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{20b3b977-8e3c-420e-950a-531c1220b364}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3e42085e-6da7-48af-bdfa-473a7899bfb4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{f810dba1-6fd4-44ab-bf32-b249b4078d1b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b1aa8065-20f8-467d-9061-e08578c828c6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{250a034c-57f7-4196-8258-8f1e1612d13f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f7664e6a-fe43-4daf-991f-859df7cde10c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{60aa49e2-5ebd-4b2d-a4ae-1e1046163318}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f1326ffa-e64d-40d3-a47e-915195e0351a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{7eb4829c-c085-46fb-af72-79ba1183d85a}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9d9212b8-0273-4b98-b591-33f7c86ee91b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{2d1fc457-7ce3-4338-8d44-99d4b3df7135}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f164c69-63fc-4f82-93ae-2e34fdb3f458}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{003a505a-337e-4229-8ccc-bd78602391c0}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9fb68d4d-2dbe-4999-88cd-d6ce4f0f160d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{f4114ffe-9994-4331-897d-a52029366aff}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{4b53770a-8215-4d4b-b70e-f575d1820382}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{828714c4-311d-4f1d-a8b7-055e63091653}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -85,7 +85,7 @@ | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros"/> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>15.0.26228.4</_ProjectFileVersion> | ||||
|     <_ProjectFileVersion>15.0.27428.2015</_ProjectFileVersion> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoNet64d</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">PocoNetmdd</TargetName> | ||||
|     <TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">PocoNetmtd</TargetName> | ||||
| @@ -335,6 +335,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\MulticastSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultipartWriter.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NameValueCollection.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Net.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\NetException.h"/> | ||||
| @@ -360,6 +361,7 @@ | ||||
|     <ClInclude Include="include\Poco\Net\RemoteSyslogListener.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\ServerSocketImpl.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPChannel.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\SMTPClientSession.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\Socket.h"/> | ||||
| @@ -381,6 +383,11 @@ | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerConnectionFactory.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerDispatcher.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\TCPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocket.h"/> | ||||
|     <ClInclude Include="include\Poco\Net\WebSocketImpl.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -483,6 +490,8 @@ | ||||
|     <ClCompile Include="src\TCPServerConnectionFactory.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerDispatcher.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\UDPClient.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"/> | ||||
|     <ClCompile Include="src\WebSocket.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketImpl.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -2,148 +2,157 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{6442b4c1-66d3-4ec8-a40e-7f08ab47c795}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8c360576-b88d-41b5-ac00-b02e07d09cad}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{8d1c024d-8244-4c90-9579-76a8f1d58e79}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{18bfce41-a69b-4228-9a42-0ac30b16698c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{f38d6d8b-41ef-4ffd-b8db-d114e669859c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{5c176d7a-f182-4488-98ff-d17a15d04bfa}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{5069f6eb-db4d-4753-8029-b136bd203799}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7e039cc8-1a2c-4eb9-83ad-71475167de66}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{3ae5c32f-5564-49f7-bcfb-8aa03efc35dc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7871194f-a873-49ee-9a0d-ffd580f27cc4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{cabdd975-3dcc-4d5f-b2ed-2666ae8770c3}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{7ea32787-6bdc-42a4-98df-345ca5d07307}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{9f678a1e-cf41-40b4-a4ee-b208c5d5f3e1}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{8edc6273-bb7f-426a-9f3a-a87eac52713a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{c7c82e5d-9689-4993-bcac-a506c851e0bc}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1d06f153-2714-423d-b139-91211b5c00a1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{e900fb82-05fb-4b16-8629-d4094811513c}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{aa5617c4-5f30-49ef-aec0-2107956a8bfb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{fcfa3d93-a1ce-4aca-aaf8-30387304db50}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{c5d1e6bf-7e4c-4176-a694-8d2db8aafd6d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{a92530db-130d-43cc-952f-01530dacb399}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ea97dbd1-c9ff-4be4-964a-1630c1755f88}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{a459fa4a-3bac-4955-86d9-2619baefd417}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{110189b9-c5fc-48e3-976a-1ba94a8a84b5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{e4b42a8f-9f89-43e4-8b4d-118b87e6a83e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{1e350ffe-0b71-4113-b817-f63a3c8f1df1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{4dd5f092-8d24-4351-b009-87de1c5842be}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{01f7dacf-0b9c-4b63-8208-ec65923b77e4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{ffe7dffe-bccb-46e0-9339-56139122bd92}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{3f780e9a-9ad8-47a1-9b60-4a540d051efb}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{9d775cec-dfe6-40c8-a80f-26903eb3ddab}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a5040df9-a415-4606-907f-907ce1720530}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{e7dc7c66-5b6a-46cc-a80c-fab35c122001}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4da71e83-6da3-40af-9037-3bfa842a7c30}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{7c7b0b3e-c6da-45ae-876e-926f5e7480b2}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{077b37ca-21d9-4b66-a707-16e4747a48d0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{c0816cbe-28b2-4ecc-aa24-d1fcae444a2e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{fe4d7bde-9c0d-4463-a73a-5973e0c118fd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{7f79be94-acfe-4a89-b15f-e5932a0ff6ab}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{b052f2b1-83a1-45f6-9fe3-dad6db836a93}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{c3be2ec8-6f4c-429c-b0a6-1d56a9321894}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f78e369c-7705-4df9-b495-acd9c19bee3b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{bddade8c-a271-45ac-b9db-b4c2f6a036d5}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0d762274-ff95-4c84-8400-ec5a13284808}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{75fa7ceb-e139-4814-840e-09a8ee9f12c6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{85a97687-15d4-40bd-bbac-2c603a3fb933}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{be05f4bc-b5cd-4a2d-a969-3c3d8bbdc464}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f0bbd38d-9831-4765-8295-32e26f05289b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{e2d94fdc-c522-403b-ac8e-126a6f544a95}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{03801d34-2c13-4d76-a279-b68f93fabd0a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{dc6a25f2-d885-4f6a-b377-26abed436d6f}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{70cf80a2-ceae-4121-86ef-07e43803e4e4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{8e3fd2c1-f4af-47f6-8555-ce39ffb08319}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ef7dd9a8-7388-4cef-bf14-0b226d8d513e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{7e2382b2-cd3e-486d-b1a7-56912c32ad70}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4a1e679d-9e0b-44b3-82f2-924f87ad062d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{d6c53942-bb1d-438a-ad39-6f9c2f4a7c36}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f15ae96a-41bb-488c-9868-a366a8191230}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{a9162ecb-0f50-4b17-a857-6afe98b83c23}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{16e13148-39ec-4506-9ea7-9bd3bf8465ea}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{e25932fa-c91c-4546-aaee-77d5ca5be6e7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{a36ecb86-ff31-4009-8113-bcbbbdee0f3f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{f42eb6dd-fdc5-4db7-934a-0d54090c30f8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0e56671e-da7d-4d74-a00d-7e883ba1dc4c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{f440ae27-b2e0-4b9d-8925-0f83b37ea292}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{4b511863-51ce-4ce9-a04d-b72df588c249}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{54aa7b50-6cb3-4aaf-94ee-dea8cf336938}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{0d3b8b06-8044-4147-807b-f1544a7831cd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{e6f8e338-f6d0-4af3-90f5-7b74f53874b8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f41cba0e-ae39-4e9e-af20-df35feb1287c}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{2cb7138d-2ad6-44ec-bc80-31d05b0f86a7}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{921c45df-3c3f-4e19-ad13-4f53a997775d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{3a7eff2f-3852-47d9-b508-0aa6997d9336}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{f977ddc9-519f-43ce-bf98-0bd8e531fdb7}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{f78d7274-2486-4ca7-bebf-a88f1c527daa}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{6c1894a9-37bf-4712-8113-fb079bbf526e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{ab469949-29b6-466a-af0e-a66eadfa91a8}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{bf761fc0-7076-46bc-9197-b151ccecc044}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{a5b27e6c-3cd4-498c-82d9-516b801262f6}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{eb52d784-50e9-4588-91e1-b817e6d5363d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{46562fa2-614c-4fd3-bab3-2b1735a1ebfb}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{e8182ebd-0a74-418c-a292-213ae8920c43}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{43f39d87-319a-447f-a2e2-60dadeb6936b}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{9134903b-32d9-4687-9f45-312123788be6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{a1abe9f6-97c3-48be-926a-6a2088855450}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{ab7abfc7-3f8e-415c-af6d-225bd748bad8}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{2c643087-03eb-44e6-8408-6d1247660651}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{447b8371-ebf6-4dad-82dc-b974217ae77a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{bc9ffab9-4642-4bf4-aa51-46b9c0c7de14}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{cd7f3933-6bac-44b0-ab50-7e7687495afe}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{b57ce297-c602-4055-ada3-8011c281b5fd}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{12ff6202-dfae-46ab-bd22-33edaf6f39ab}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{78a31153-b77b-4820-a587-39b0a7c14875}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{cda4dc65-06df-4076-823e-e376c4cec54f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{aaf92947-b538-4cef-be49-cf5332dec37e}</UniqueIdentifier> | ||||
|       <UniqueIdentifier>{65a35422-66bf-4eef-8cca-4e3bc7838500}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{208c459f-5f9d-46f8-ad10-ed5477471e29}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{8fe08a04-9cf9-46f4-ada4-bf7026a3c718}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{e8126c7b-f7eb-4fd0-8405-a25686a2eb43}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
| @@ -465,6 +474,27 @@ | ||||
|     <ClInclude Include="include\Poco\Net\OAuth20Credentials.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\MultiSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\SingleSocketPoller.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPClient.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPHandler.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServer.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPServerParams.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="include\Poco\Net\UDPSocketReader.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNS.cpp"> | ||||
| @@ -767,6 +797,12 @@ | ||||
|     <ClCompile Include="src\OAuth20Credentials.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPClient.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerParams.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ResourceCompile Include="..\DLLVersion.rc" /> | ||||
|   | ||||
| @@ -949,6 +949,33 @@ | ||||
| 					RelativePath=".\src\OAuth20Credentials.cpp"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="UDP"> | ||||
| 			<Filter | ||||
| 				Name="Source Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPClient.cpp"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerParams.cpp"/> | ||||
| 			</Filter> | ||||
| 			<Filter | ||||
| 				Name="Header Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\MultiSocketPoller.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\SingleSocketPoller.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPClient.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPHandler.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPServer.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPServerParams.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\include\Poco\Net\UDPSocketReader.h"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<File | ||||
| 			RelativePath="..\DLLVersion.rc"> | ||||
| 			<FileConfiguration | ||||
|   | ||||
| @@ -20,6 +20,7 @@ | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/Socket.h" | ||||
| #include "Poco/Buffer.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| @@ -108,12 +109,29 @@ public: | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
|  | ||||
| 	int sendBytes(const SocketBufVec& buffer, int flags = 0); | ||||
| 		/// Sends the contents of the given buffers through | ||||
| 		/// the socket. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
|  | ||||
| 	int receiveBytes(void* buffer, int length, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveBytes(SocketBufVec& buffer, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it in buffers. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveBytes(Poco::Buffer<char>& buffer, int flags = 0, const Poco::Timespan& timeout = 100000); | ||||
| 		/// Receives data from the socket and stores it in buffers. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0); | ||||
| 		/// Sends the contents of the given buffer through | ||||
| 		/// the socket to the given address. | ||||
| @@ -121,6 +139,13 @@ public: | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
|  | ||||
| 	int sendTo(const SocketBufVec& buffers, const SocketAddress& address, int flags = 0); | ||||
| 		/// Sends the contents of the given buffers through | ||||
| 		/// the socket to the given address. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
|  | ||||
| 	int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. | ||||
| @@ -128,6 +153,30 @@ public: | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveFrom(void* buffer, int length, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. | ||||
| 		/// Stores the native address of the sender in | ||||
| 		/// ppSA, and the length of native address in ppSALen. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveFrom(SocketBufVec& buffers, SocketAddress& address, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffers. Up to total length of all buffers | ||||
| 		/// are received. | ||||
| 		/// Stores the address of the sender in address. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveFrom(SocketBufVec& buffers, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffers. | ||||
| 		/// Stores the native address of the sender in | ||||
| 		/// ppSA, and the length of native address in ppSALen. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	void setBroadcast(bool flag); | ||||
| 		/// Sets the value of the SO_BROADCAST socket option. | ||||
| 		/// | ||||
|   | ||||
| @@ -67,7 +67,7 @@ public: | ||||
| 		int repeat = 1, | ||||
| 		int dataSize = 48, | ||||
| 		int ttl = 128, | ||||
| 		int timeout = 50000); | ||||
| 		int timeout = 100000); | ||||
| 		/// Pings the specified address [repeat] times. | ||||
| 		/// Notifications are not posted for events. | ||||
| 		///  | ||||
| @@ -77,7 +77,7 @@ public: | ||||
| 		int repeat = 1, | ||||
| 		int dataSize = 48, | ||||
| 		int ttl = 128, | ||||
| 		int timeout = 50000); | ||||
| 		int timeout = 100000); | ||||
| 		/// Calls ICMPClient::ping(SocketAddress&, int) and | ||||
| 		/// returns the result. | ||||
| 		///  | ||||
|   | ||||
| @@ -68,10 +68,12 @@ public: | ||||
| 		/// | ||||
| 		/// Supplied buffer includes IP header, ICMP header and data. | ||||
|  | ||||
| 	std::string errorDescription(Poco::UInt8* buffer, int length); | ||||
| 	std::string errorDescription(Poco::UInt8* buffer, int length, int& type, int& code); | ||||
| 		/// Returns error description string. | ||||
| 		/// If supplied buffer contains an ICMP echo reply packet, an | ||||
| 		/// empty string is returned indicating the absence of error. | ||||
| 		/// If type and code of the error can be determined, they are | ||||
| 		/// assigned to the type and code respectively. | ||||
| 		/// | ||||
| 		/// Supplied buffer includes IP header, ICMP header and data. | ||||
|  | ||||
|   | ||||
| @@ -71,10 +71,12 @@ public: | ||||
| 		/// Supplied buffer includes IP header, ICMP header and data. | ||||
| 		/// Must be overriden. | ||||
|  | ||||
| 	virtual std::string errorDescription(Poco::UInt8* buffer, int length) = 0; | ||||
| 	virtual std::string errorDescription(Poco::UInt8* buffer, int length, int& type, int& code) = 0; | ||||
| 		/// Returns error description string. | ||||
| 		/// If supplied buffer contains an ICMP echo reply packet, an | ||||
| 		/// empty string is returned indicating the absence of error. | ||||
| 		/// If type and code of the error can be determined, they are | ||||
| 		/// assigned to the type and code respectively. | ||||
| 		/// | ||||
| 		/// Supplied buffer includes IP header, ICMP header and data. | ||||
| 		/// Must be overriden. | ||||
| @@ -84,6 +86,7 @@ public: | ||||
| 		/// Must be overriden. | ||||
|  | ||||
| 	static const Poco::UInt16 MAX_PACKET_SIZE; | ||||
| 	static const Poco::UInt16 MAX_PAYLOAD_SIZE; | ||||
| 	static const Poco::UInt16 MAX_SEQ_VALUE; | ||||
|  | ||||
| protected: | ||||
|   | ||||
| @@ -69,12 +69,19 @@ public: | ||||
| 	int dataSize() const; | ||||
| 		/// Returns the data size in bytes. | ||||
|  | ||||
| 	int packetSize() const; | ||||
| 		/// Returns the packet size in bytes. | ||||
|  | ||||
| 	int ttl() const; | ||||
| 		/// Returns the Time-To-Live value. | ||||
|  | ||||
| 	int timeout() const; | ||||
| 		/// Returns the socket timeout value. | ||||
|  | ||||
| 	static Poco::UInt16 mtu(const SocketAddress& address, Poco::UInt16 sz); | ||||
| 		/// Returns minimum payload path MTU size for the destination, | ||||
| 		/// or 0 if MTU can not be determined. | ||||
|  | ||||
| protected: | ||||
| 	ICMPSocket(SocketImpl* pImpl); | ||||
| 		/// Creates the Socket and attaches the given SocketImpl. | ||||
|   | ||||
| @@ -51,6 +51,9 @@ public: | ||||
| 	int dataSize() const; | ||||
| 		/// Returns the data size in bytes. | ||||
|  | ||||
| 	int packetSize() const; | ||||
| 		/// Returns the packet size in bytes. | ||||
|  | ||||
| 	int ttl() const; | ||||
| 		/// Returns the Time-To-Live value. | ||||
|  | ||||
| @@ -61,6 +64,8 @@ protected: | ||||
| 	~ICMPSocketImpl(); | ||||
|  | ||||
| private: | ||||
| 	void checkFragmentation(const std::string& err, int type, int code); | ||||
|  | ||||
| 	ICMPPacket _icmpPacket; | ||||
| 	int _ttl; | ||||
| 	int _timeout; | ||||
| @@ -70,6 +75,12 @@ private: | ||||
| // | ||||
| // inlines | ||||
| // | ||||
|  | ||||
| inline int ICMPSocketImpl::packetSize() const | ||||
| { | ||||
| 	return _icmpPacket.packetSize(); | ||||
| } | ||||
|  | ||||
| inline int ICMPSocketImpl::dataSize() const | ||||
| { | ||||
| 	return _icmpPacket.getDataSize(); | ||||
|   | ||||
| @@ -30,7 +30,7 @@ namespace Net { | ||||
|  | ||||
| class Net_API ICMPv4PacketImpl : public ICMPPacketImpl | ||||
| 	/// This class implements the ICMPv4 packet. | ||||
| 	/// Parts are based on original ICMP code by | ||||
| 	/// Parts are based on the original ICMP code by | ||||
| 	/// Mike Muuss | ||||
| 	/// U. S. Army Ballistic Research Laboratory | ||||
|  	/// December, 1983 | ||||
| @@ -135,10 +135,12 @@ public: | ||||
| 		/// | ||||
| 		/// Buffer includes IP header, ICMP header and data. | ||||
|  | ||||
| 	virtual std::string errorDescription(Poco::UInt8* buffer, int length); | ||||
| 	virtual std::string errorDescription(Poco::UInt8* buffer, int length, int& type, int& code); | ||||
| 		/// Returns error description string. | ||||
| 		/// If supplied buffer contains ICMPv4 echo reply packet, an | ||||
| 		/// empty string is returned indicating the absence of error. | ||||
| 		/// If type and code of the error can be determined, they are | ||||
| 		/// assigned to the type and code respectively. | ||||
| 		/// | ||||
| 		/// Buffer includes IP header, ICMP header and data. | ||||
|  | ||||
|   | ||||
							
								
								
									
										128
									
								
								Net/include/Poco/Net/MultiSocketPoller.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								Net/include/Poco/Net/MultiSocketPoller.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,128 @@ | ||||
| // | ||||
| // MultiSocketPoller.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  MultiSocketPoller | ||||
| // | ||||
| // Definition of the MultiSocketPoller class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_MultiSocketPoller_INCLUDED | ||||
| #define Net_MultiSocketPoller_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/Socket.h" | ||||
| #include "Poco/Net/UDPHandler.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| template <std::size_t S = POCO_UDP_BUF_SIZE> | ||||
| class MultiSocketPoller | ||||
| 	/// MultiSocketPoller, as its name indicates, repeatedly polls a set of | ||||
| 	/// sockets for readability and/or eror. If socket is readable or in error | ||||
| 	/// state, the reading/error handling actions are delegated to the reader. | ||||
| { | ||||
| public: | ||||
| 	MultiSocketPoller(typename UDPHandlerImpl<S>::List& handlers, const Poco::Net::SocketAddress& sa, int nSockets = 10, Poco::Timespan timeout = 250000): | ||||
| 		_address(sa), | ||||
| 		_timeout(timeout), | ||||
| 		_reader(handlers) | ||||
| 		/// Creates the MutiSocketPoller. | ||||
| 	{ | ||||
| 		poco_assert (_address.port() > 0 && _address.host().toString() != "0.0.0.0"); | ||||
| 		addSockets(nSockets); | ||||
| 	} | ||||
|  | ||||
| 	MultiSocketPoller(typename UDPHandlerImpl<S>::List& handlers, const UDPServerParams& serverParams): | ||||
| 		_address(serverParams.address()), | ||||
| 		_timeout(serverParams.timeout()), | ||||
| 		_reader(handlers) | ||||
| 		/// Creates the MutiSocketPoller. | ||||
| 	{ | ||||
| 		poco_assert (_address.port() > 0 && _address.host().toString() != "0.0.0.0"); | ||||
| 		addSockets(serverParams.numberOfSockets()); | ||||
| 	} | ||||
|  | ||||
| 	~MultiSocketPoller() | ||||
| 		/// Destroys MutiSocketPoller | ||||
| 	{ | ||||
| 	} | ||||
|  | ||||
| 	Poco::UInt16 port() const | ||||
| 		/// Returns the port the socket is | ||||
| 		/// listening on. | ||||
| 	{ | ||||
| 		return _address.port(); | ||||
| 	} | ||||
|  | ||||
| 	Poco::Net::SocketAddress address() const | ||||
| 		/// Returns the address of the server. | ||||
| 	{ | ||||
| 		return _address; | ||||
| 	} | ||||
|  | ||||
| 	void poll() | ||||
| 	{ | ||||
| 		if (_reader.handlerStopped()) return; | ||||
| 		PollSet::SocketModeMap sm; | ||||
| 		PollSet::SocketModeMap::iterator it; | ||||
| 		PollSet::SocketModeMap::iterator end; | ||||
| 		sm = _pollSet.poll(_timeout); | ||||
| 		it = sm.begin(); | ||||
| 		end = sm.end(); | ||||
| 		for (; it != end; ++it) | ||||
| 		{ | ||||
| 			if (it->second & PollSet::POLL_READ) | ||||
| 			{ | ||||
| 				DatagramSocket ds(it->first); | ||||
| 				_reader.read(ds); | ||||
| 			} | ||||
| 			else if (it->second & PollSet::POLL_ERROR) | ||||
| 			{ | ||||
| 				_reader.setError(it->first.impl()->sockfd()); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	void stop() | ||||
| 	{ | ||||
| 		_reader.stopHandler(); | ||||
| 	} | ||||
|  | ||||
| 	bool done() const | ||||
| 	{ | ||||
| 		return _reader.handlerDone(); | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	void addSockets(int nSockets) | ||||
| 	{ | ||||
| 		for (int i = 0; i < nSockets; ++i) | ||||
| 		{ | ||||
| 			DatagramSocket ds; ds.bind(_address, true, true); | ||||
| 			_pollSet.add(ds, PollSet::POLL_READ | PollSet::POLL_ERROR); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	PollSet            _pollSet; | ||||
| 	SocketAddress      _address; | ||||
| 	Poco::Timespan     _timeout; | ||||
| 	UDPSocketReader<S> _reader; | ||||
| }; | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_MultiSocketPoller_INCLUDED | ||||
| @@ -47,6 +47,7 @@ POCO_DECLARE_EXCEPTION(Net_API, FTPException, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, SMTPException, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, POP3Exception, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, ICMPException, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, ICMPFragmentationException, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, NTPException, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, HTMLFormException, NetException) | ||||
| POCO_DECLARE_EXCEPTION(Net_API, WebSocketException, NetException) | ||||
|   | ||||
| @@ -53,7 +53,8 @@ class ParallelSocketAcceptor | ||||
| 	/// details. | ||||
| { | ||||
| public: | ||||
| 	typedef Poco::Net::ParallelSocketReactor<SR> ParallelReactor; | ||||
| 	typedef Poco::Net::ParallelSocketReactor<SR>                         ParallelReactor; | ||||
| 	typedef Poco::Observer<ParallelSocketAcceptor, ReadableNotification> Observer; | ||||
|  | ||||
| 	explicit ParallelSocketAcceptor(ServerSocket& socket, | ||||
| 		unsigned threads = Poco::Environment::processorCount()): | ||||
| @@ -79,9 +80,7 @@ public: | ||||
| 		/// with the given SocketReactor. | ||||
| 	{ | ||||
| 		init(); | ||||
| 		_pReactor->addEventHandler(_socket, | ||||
| 			Poco::Observer<ParallelSocketAcceptor, | ||||
| 			ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 		_pReactor->addEventHandler(_socket, Observer(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 	} | ||||
|  | ||||
| 	virtual ~ParallelSocketAcceptor() | ||||
| @@ -91,9 +90,7 @@ public: | ||||
| 		{ | ||||
| 			if (_pReactor) | ||||
| 			{ | ||||
| 				_pReactor->removeEventHandler(_socket, | ||||
| 					Poco::Observer<ParallelSocketAcceptor, | ||||
| 					ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 				_pReactor->removeEventHandler(_socket, Observer(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 			} | ||||
| 		} | ||||
| 		catch (...) | ||||
| @@ -105,13 +102,7 @@ public: | ||||
| 	void setReactor(SocketReactor& reactor) | ||||
| 		/// Sets the reactor for this acceptor. | ||||
| 	{ | ||||
| 		_pReactor = &reactor; | ||||
| 		if (!_pReactor->hasEventHandler(_socket,  | ||||
| 			Poco::Observer<ParallelSocketAcceptor, | ||||
| 			ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept))) | ||||
| 		{ | ||||
| 			registerAcceptor(reactor); | ||||
| 		} | ||||
| 		registerAcceptor(reactor); | ||||
| 	} | ||||
|  | ||||
| 	virtual void registerAcceptor(SocketReactor& reactor) | ||||
| @@ -123,13 +114,11 @@ public: | ||||
| 		/// The overriding method must either call the base class | ||||
| 		/// implementation or register the accept handler on its own. | ||||
| 	{ | ||||
| 		if (_pReactor) | ||||
| 			throw Poco::InvalidAccessException("Acceptor already registered."); | ||||
|  | ||||
| 		_pReactor = &reactor; | ||||
| 		_pReactor->addEventHandler(_socket, | ||||
| 			Poco::Observer<ParallelSocketAcceptor, | ||||
| 			ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 		if (!_pReactor->hasEventHandler(_socket, Observer(*this, &ParallelSocketAcceptor::onAccept))) | ||||
| 		{ | ||||
| 			_pReactor->addEventHandler(_socket, Observer(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	virtual void unregisterAcceptor() | ||||
| @@ -143,9 +132,7 @@ public: | ||||
| 	{ | ||||
| 		if (_pReactor) | ||||
| 		{ | ||||
| 			_pReactor->removeEventHandler(_socket, | ||||
| 				Poco::Observer<ParallelSocketAcceptor, | ||||
| 				ReadableNotification>(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 			_pReactor->removeEventHandler(_socket, Observer(*this, &ParallelSocketAcceptor::onAccept)); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
							
								
								
									
										104
									
								
								Net/include/Poco/Net/SingleSocketPoller.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								Net/include/Poco/Net/SingleSocketPoller.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | ||||
| // | ||||
| // SingleSocketPoller.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  SingleSocketPoller | ||||
| // | ||||
| // Definition of the SingleSocketPoller class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_SingleSocketPoller_INCLUDED | ||||
| #define Net_SingleSocketPoller_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/DatagramSocket.h" | ||||
| #include "Poco/Net/UDPHandler.h" | ||||
| #include "Poco/Net/PollSet.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| template <std::size_t S = POCO_UDP_BUF_SIZE> | ||||
| class SingleSocketPoller | ||||
| 	/// SinlgeSocketPoller, as its name indicates, repeatedly polls a single | ||||
| 	/// socket for readability; if the socket is readable, the reading action | ||||
| 	/// is delegated to the reader. | ||||
| { | ||||
| public: | ||||
| 	SingleSocketPoller(typename UDPHandlerImpl<S>::List& handlers, const Poco::Net::SocketAddress& sa, Poco::Timespan timeout = 250000): _reader(handlers), _timeout(timeout) | ||||
| 		/// Creates the SingleSocketPoller and binds it to | ||||
| 		/// the given address. | ||||
| 	{ | ||||
| 		_socket.bind(sa, false, false); | ||||
| 		_socket.setBlocking(false); | ||||
| 	} | ||||
|  | ||||
| 	SingleSocketPoller(typename UDPHandlerImpl<S>::List& handlers, const UDPServerParams& serverParams): _reader(handlers, serverParams), _timeout(serverParams.timeout()) | ||||
| 		/// Creates the SingleSocketPoller and binds it to | ||||
| 		/// the given address. | ||||
| 	{ | ||||
| 		_socket.bind(serverParams.address(), false, false); | ||||
| 		_socket.setBlocking(false); | ||||
| 	} | ||||
|  | ||||
| 	~SingleSocketPoller() | ||||
| 		/// Destroys SingleSocketPoller | ||||
| 	{ | ||||
| 	} | ||||
|  | ||||
| 	Poco::UInt16 port() const | ||||
| 		/// Returns the port the socket is | ||||
| 		/// listening on. | ||||
| 	{ | ||||
| 		return _socket.address().port(); | ||||
| 	} | ||||
|  | ||||
| 	Poco::Net::SocketAddress address() const | ||||
| 		/// Returns the address of the server. | ||||
| 	{ | ||||
| 		return _socket.address(); | ||||
| 	} | ||||
|  | ||||
| 	void poll() | ||||
| 		/// Poll the socket and read if readable. | ||||
| 	{ | ||||
| 		if (_reader.handlerStopped()) return; | ||||
| 		if (_socket.poll(_timeout, Socket::SELECT_READ)) | ||||
| 		{ | ||||
| 			_reader.read(_socket); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	void stop() | ||||
| 		/// Stops the handler. | ||||
| 	{ | ||||
| 		_reader.stopHandler(); | ||||
| 	} | ||||
|  | ||||
| 	bool done() const | ||||
| 		/// Returns tru if handler is done. | ||||
| 	{ | ||||
| 		return _reader.handlerDone(); | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	Poco::Net::DatagramSocket _socket; | ||||
| 	UDPSocketReader<S>        _reader; | ||||
| 	Poco::Timespan            _timeout; | ||||
| }; | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_SingleSocketPoller_INCLUDED | ||||
| @@ -35,6 +35,8 @@ class Net_API Socket | ||||
| 	/// It provides operations common to all socket types. | ||||
| { | ||||
| public: | ||||
| 	typedef SocketBufVec BufVec; | ||||
|  | ||||
| 	enum SelectMode | ||||
| 		/// The mode argument to poll() and select(). | ||||
| 	{ | ||||
| @@ -294,6 +296,44 @@ public: | ||||
| 		/// of the Socket object makes sense. One example is setting | ||||
| 		/// a socket option before calling bind() on a ServerSocket. | ||||
|  | ||||
| 	static SocketBuf makeBuffer(void* buffer, std::size_t length); | ||||
| 		/// Creates and returns buffer. Suitable for creating | ||||
| 		/// the appropriate buffer for the platform. | ||||
|  | ||||
| 	static SocketBufVec makeBufVec(std::size_t size, std::size_t bufLen); | ||||
| 		/// Creates and returns a vector of requested size, with | ||||
| 		/// allocated buffers and lengths set accordingly. | ||||
| 		/// This utility function works well when all buffers are | ||||
| 		/// of same size. | ||||
|  | ||||
| 	static void destroyBufVec(SocketBufVec& buf); | ||||
| 		/// Releases the memory pointed to by vector members | ||||
| 		/// and shrinks the vector to size 0. | ||||
| 		/// The vector must be created by makeBufVec(size_t, size_t). | ||||
|  | ||||
| 	static SocketBufVec makeBufVec(const std::vector<char*>& vec); | ||||
| 		/// Creates and returns a vector of requested size, with | ||||
| 		/// buffers pointing to the supplied data (so, `vec` must | ||||
| 		/// remain available at the time of use) and lengths set | ||||
| 		/// accordingly. | ||||
| 		/// Notes: | ||||
| 		///   - data length is determined using `strlen`, so this | ||||
| 		///     function is not meant to be used with binary data. | ||||
| 		/// | ||||
| 		///   - if the returned buffer is used for read operations | ||||
| 		///     (ie. operations that write to the bufer), pointing | ||||
| 		///     to string literals will result in undefined behavior, | ||||
| 		///     in best case an I/O error and subsequent exception | ||||
|  | ||||
| 	static SocketBufVec makeBufVec(const std::vector<std::string>& vec); | ||||
| 		/// Creates and returns a vector of requested size, with | ||||
| 		/// buffers pointing to the supplied data (so, `vec` must | ||||
| 		/// remain available at the time of use) and lengths set | ||||
| 		/// accordingly. | ||||
| 		/// Note:: this function is not suitable for creation | ||||
| 		/// of buffers used for writing (ie. reading from socket | ||||
| 		/// into buffers). | ||||
|  | ||||
| protected: | ||||
| 	Socket(SocketImpl* pImpl); | ||||
| 		/// Creates the Socket and attaches the given SocketImpl. | ||||
|   | ||||
| @@ -68,6 +68,8 @@ class SocketAcceptor | ||||
| 	/// if special steps are necessary to create a ServiceHandler object. | ||||
| { | ||||
| public: | ||||
| 	typedef Poco::Observer<SocketAcceptor, ReadableNotification> Observer; | ||||
|  | ||||
| 	explicit SocketAcceptor(ServerSocket& socket): | ||||
| 		_socket(socket), | ||||
| 		_pReactor(0) | ||||
| @@ -81,8 +83,7 @@ public: | ||||
| 		/// Creates a SocketAcceptor, using the given ServerSocket. | ||||
| 		/// The SocketAcceptor registers itself with the given SocketReactor. | ||||
| 	{ | ||||
| 		_pReactor->addEventHandler(_socket, Poco::Observer<SocketAcceptor, | ||||
| 			ReadableNotification>(*this, &SocketAcceptor::onAccept)); | ||||
| 		_pReactor->addEventHandler(_socket, Observer(*this, &SocketAcceptor::onAccept)); | ||||
| 	} | ||||
|  | ||||
| 	virtual ~SocketAcceptor() | ||||
| @@ -92,8 +93,7 @@ public: | ||||
| 		{ | ||||
| 			if (_pReactor) | ||||
| 			{ | ||||
| 				_pReactor->removeEventHandler(_socket, Poco::Observer<SocketAcceptor, | ||||
| 					ReadableNotification>(*this, &SocketAcceptor::onAccept)); | ||||
| 				_pReactor->removeEventHandler(_socket, Observer(*this, &SocketAcceptor::onAccept)); | ||||
| 			} | ||||
| 		} | ||||
| 		catch (...) | ||||
| @@ -120,10 +120,9 @@ public: | ||||
| 		/// the reactor. | ||||
| 	{ | ||||
| 		_pReactor = &reactor; | ||||
| 		if (!_pReactor->hasEventHandler(_socket, Poco::Observer<SocketAcceptor, | ||||
| 			ReadableNotification>(*this, &SocketAcceptor::onAccept))) | ||||
| 		if (!_pReactor->hasEventHandler(_socket, Observer(*this, &SocketAcceptor::onAccept))) | ||||
| 		{ | ||||
| 			_pReactor->addEventHandler(_socket, Poco::Observer<SocketAcceptor, ReadableNotification>(*this, &SocketAcceptor::onAccept)); | ||||
| 			_pReactor->addEventHandler(_socket, Observer(*this, &SocketAcceptor::onAccept)); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| @@ -139,7 +138,7 @@ public: | ||||
| 	{ | ||||
| 		if (_pReactor) | ||||
| 		{ | ||||
| 			_pReactor->removeEventHandler(_socket, Poco::Observer<SocketAcceptor, ReadableNotification>(*this, &SocketAcceptor::onAccept)); | ||||
| 			_pReactor->removeEventHandler(_socket, Observer(*this, &SocketAcceptor::onAccept)); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
|   | ||||
| @@ -18,6 +18,9 @@ | ||||
| #define Net_SocketDefs_INCLUDED | ||||
|  | ||||
|  | ||||
| #include <vector> | ||||
|  | ||||
|  | ||||
| #define POCO_ENOERR 0 | ||||
|  | ||||
|  | ||||
| @@ -25,6 +28,7 @@ | ||||
| 	#include "Poco/UnWindows.h" | ||||
| 	#include <winsock2.h> | ||||
| 	#include <ws2tcpip.h> | ||||
| 	#include <ws2def.h> | ||||
| 	#define POCO_INVALID_SOCKET  INVALID_SOCKET | ||||
| 	#define poco_socket_t        SOCKET | ||||
| 	#define poco_socklen_t       int | ||||
| @@ -133,6 +137,7 @@ | ||||
| 	#include <sys/types.h> | ||||
| 	#include <sys/socket.h> | ||||
| 	#include <sys/un.h> | ||||
| 	#include <sys/uio.h> | ||||
| 	#include <fcntl.h> | ||||
| 	#if POCO_OS != POCO_OS_HPUX | ||||
| 		#include <sys/select.h> | ||||
| @@ -351,6 +356,14 @@ namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 	typedef WSABUF SocketBuf; | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) // TODO: may need more refinement | ||||
| 	typedef iovec SocketBuf; | ||||
| #endif | ||||
|  | ||||
| typedef std::vector<SocketBuf> SocketBufVec; | ||||
|  | ||||
| struct AddressFamily | ||||
| 	/// AddressFamily::Family replaces the previously used IPAddress::Family | ||||
| 	/// enumeration and is now used for IPAddress::Family and SocketAddress::Family. | ||||
|   | ||||
| @@ -23,6 +23,7 @@ | ||||
| #include "Poco/Net/SocketAddress.h" | ||||
| #include "Poco/RefCountedObject.h" | ||||
| #include "Poco/Timespan.h" | ||||
| #include "Poco/Buffer.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| @@ -167,6 +168,13 @@ public: | ||||
| 		/// Certain socket implementations may also return a negative | ||||
| 		/// value denoting a certain condition. | ||||
|  | ||||
| 	virtual int sendBytes(const SocketBufVec& buffers, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it in buffers. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
| 		/// | ||||
| 		/// Always returns zero for platforms where not implemented. | ||||
|  | ||||
| 	virtual int receiveBytes(void* buffer, int length, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. | ||||
| @@ -176,6 +184,22 @@ public: | ||||
| 		/// Certain socket implementations may also return a negative | ||||
| 		/// value denoting a certain condition. | ||||
|  | ||||
| 	virtual int receiveBytes(SocketBufVec& buffers, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it in buffers. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
| 		/// | ||||
| 		/// Always returns zero for platforms where not implemented. | ||||
|  | ||||
| 	virtual int receiveBytes(Poco::Buffer<char>& buffer, int flags = 0, const Poco::Timespan& timeout = 100000); | ||||
| 		/// Receives data from the socket and stores it in the buffer. | ||||
| 		/// If needed, the buffer will be resized to accomodate the | ||||
| 		/// data. Note that this function may impose additional | ||||
| 		/// performance penalties due to the check for the available | ||||
| 		/// amount of data. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	virtual int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0); | ||||
| 		/// Sends the contents of the given buffer through | ||||
| 		/// the socket to the given address. | ||||
| @@ -183,6 +207,23 @@ public: | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
|  | ||||
| 	virtual int sendTo(const SocketBufVec& buffers, const SocketAddress& address, int flags = 0); | ||||
| 		/// Sends the contents of the buffers through | ||||
| 		/// the socket to the given address. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
| 		/// | ||||
| 		/// Always returns zero for platforms where not implemented. | ||||
|  | ||||
| 	int receiveFrom(void* buffer, int length, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. | ||||
| 		/// Stores the native address of the sender in | ||||
| 		/// ppSA, and the length of native address in ppSALen. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	virtual int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. | ||||
| @@ -190,6 +231,23 @@ public: | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	virtual int receiveFrom(SocketBufVec& buffers, SocketAddress& address, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffers. | ||||
| 		/// Stores the address of the sender in address. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
| 		/// | ||||
| 		/// Always returns zero for platforms where not implemented. | ||||
|  | ||||
| 	int receiveFrom(SocketBufVec& buffers, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffers. | ||||
| 		/// Stores the native address of the sender in | ||||
| 		/// ppSA, and the length of native address in ppSALen. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	virtual void sendUrgent(unsigned char data); | ||||
| 		/// Sends one byte of urgent data through | ||||
| 		/// the socket. | ||||
| @@ -432,6 +490,8 @@ protected: | ||||
| 	void reset(poco_socket_t fd = POCO_INVALID_SOCKET); | ||||
| 		/// Allows subclasses to set the socket manually, iff no valid socket is set yet. | ||||
|  | ||||
| 	void checkBrokenTimeout(); | ||||
|  | ||||
| 	static int lastError(); | ||||
| 		/// Returns the last error code. | ||||
|  | ||||
| @@ -451,11 +511,11 @@ private: | ||||
| 	SocketImpl(const SocketImpl&); | ||||
| 	SocketImpl& operator = (const SocketImpl&); | ||||
|  | ||||
| 	poco_socket_t _sockfd; | ||||
| 	poco_socket_t  _sockfd; | ||||
| 	Poco::Timespan _recvTimeout; | ||||
| 	Poco::Timespan _sndTimeout; | ||||
| 	bool          _blocking; | ||||
| 	bool          _isBrokenTimeout; | ||||
| 	bool           _blocking; | ||||
| 	bool           _isBrokenTimeout; | ||||
|  | ||||
| 	friend class Socket; | ||||
| 	friend class SecureSocketImpl; | ||||
|   | ||||
| @@ -70,10 +70,13 @@ protected: | ||||
|  | ||||
| private: | ||||
| 	typedef std::multiset<SocketNotification*> EventSet; | ||||
| 	typedef Poco::FastMutex                    MutexType; | ||||
| 	typedef MutexType::ScopedLock              ScopedLock; | ||||
|  | ||||
| 	EventSet                 _events; | ||||
| 	Poco::NotificationCenter _nc; | ||||
| 	Socket                   _socket; | ||||
| 	MutexType                _mutex; | ||||
| }; | ||||
|  | ||||
|  | ||||
| @@ -82,6 +85,7 @@ private: | ||||
| // | ||||
| inline bool SocketNotifier::accepts(SocketNotification* pNotification) | ||||
| { | ||||
| 	ScopedLock l(_mutex); | ||||
| 	return _events.find(pNotification) != _events.end(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -26,6 +26,9 @@ | ||||
| #include "Poco/Observer.h" | ||||
| #include "Poco/AutoPtr.h" | ||||
| #include <map> | ||||
| #ifdef POCO_ENABLE_CPP11 | ||||
| #include <atomic> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| @@ -209,29 +212,34 @@ private: | ||||
| 	typedef Poco::AutoPtr<SocketNotifier>     NotifierPtr; | ||||
| 	typedef Poco::AutoPtr<SocketNotification> NotificationPtr; | ||||
| 	typedef std::map<Socket, NotifierPtr>     EventHandlerMap; | ||||
| 	typedef Poco::FastMutex MutexType; | ||||
| 	typedef MutexType::ScopedLock ScopedLock; | ||||
| 	typedef Poco::FastMutex                   MutexType; | ||||
| 	typedef MutexType::ScopedLock             ScopedLock; | ||||
|  | ||||
| 	bool hasSocketHandlers(); | ||||
| 	void dispatch(NotifierPtr& pNotifier, SocketNotification* pNotification); | ||||
| 	NotifierPtr getNotifier(const Socket& socket, bool makeNew = false); | ||||
|  | ||||
| 	enum | ||||
| 	{ | ||||
| 		DEFAULT_TIMEOUT = 250000 | ||||
| 	}; | ||||
|  | ||||
| 	bool            _stop; | ||||
| 	Poco::Timespan  _timeout; | ||||
| 	EventHandlerMap _handlers; | ||||
| 	PollSet         _pollSet; | ||||
| 	NotificationPtr _pReadableNotification; | ||||
| 	NotificationPtr _pWritableNotification; | ||||
| 	NotificationPtr _pErrorNotification; | ||||
| 	NotificationPtr _pTimeoutNotification; | ||||
| 	NotificationPtr _pIdleNotification; | ||||
| 	NotificationPtr _pShutdownNotification; | ||||
| 	MutexType       _mutex; | ||||
| 	Poco::Thread*   _pThread; | ||||
| #ifdef POCO_ENABLE_CPP11 | ||||
| 	std::atomic<bool> _stop; | ||||
| #else | ||||
| 	bool              _stop; | ||||
| #endif | ||||
| 	Poco::Timespan    _timeout; | ||||
| 	EventHandlerMap   _handlers; | ||||
| 	PollSet           _pollSet; | ||||
| 	NotificationPtr   _pReadableNotification; | ||||
| 	NotificationPtr   _pWritableNotification; | ||||
| 	NotificationPtr   _pErrorNotification; | ||||
| 	NotificationPtr   _pTimeoutNotification; | ||||
| 	NotificationPtr   _pIdleNotification; | ||||
| 	NotificationPtr   _pShutdownNotification; | ||||
| 	MutexType         _mutex; | ||||
| 	Poco::Thread*     _pThread; | ||||
|  | ||||
| 	friend class SocketNotifier; | ||||
| }; | ||||
|   | ||||
| @@ -107,6 +107,13 @@ public: | ||||
| 		/// Certain socket implementations may also return a negative | ||||
| 		/// value denoting a certain condition. | ||||
|  | ||||
| 	int sendBytes(const SocketBufVec& buffer, int flags = 0); | ||||
| 		/// Sends the contents of the given buffers through | ||||
| 		/// the socket. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes sent, which may be | ||||
| 		/// less than the number of bytes specified. | ||||
|  | ||||
| 	int sendBytes(Poco::FIFOBuffer& buffer); | ||||
| 		/// Sends the contents of the given buffer through | ||||
| 		/// the socket. FIFOBuffer has writable/readable transition | ||||
| @@ -132,6 +139,16 @@ public: | ||||
| 		/// been set and nothing is received within that interval. | ||||
| 		/// Throws a NetException (or a subclass) in case of other errors. | ||||
|  | ||||
| 	int receiveBytes(SocketBufVec& buffer, int flags = 0); | ||||
| 		/// Receives data from the socket and stores it in buffers. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveBytes(Poco::Buffer<char>& buffer, int flags = 0, const Poco::Timespan& timeout = 100000); | ||||
| 		/// Receives data from the socket and stores it in buffers. | ||||
| 		/// | ||||
| 		/// Returns the number of bytes received. | ||||
|  | ||||
| 	int receiveBytes(Poco::FIFOBuffer& buffer); | ||||
| 		/// Receives data from the socket and stores it | ||||
| 		/// in buffer. Up to length bytes are received. FIFOBuffer has  | ||||
|   | ||||
							
								
								
									
										158
									
								
								Net/include/Poco/Net/UDPClient.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								Net/include/Poco/Net/UDPClient.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,158 @@ | ||||
| // | ||||
| // UDPClient.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPClient | ||||
| // | ||||
| // Definition of the UDPClient class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_UDPClient_INCLUDED | ||||
| #define Net_UDPClient_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/SocketAddress.h" | ||||
| #include "Poco/Net/DatagramSocket.h" | ||||
| #include "Poco/Timespan.h" | ||||
| #include "Poco/Runnable.h" | ||||
| #include "Poco/Thread.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| class Net_API UDPClient : public Poco::Runnable | ||||
| 	/// UDP client can either send, or send/receive UDP packets. | ||||
| 	/// The mode of operation is specified at construction time. | ||||
| 	/// If receiving functionality is enabled, it will run in a | ||||
| 	/// separate thread. | ||||
| 	/// This class is written as a "companion" to Poco::Net::UDPServer. | ||||
| 	/// For other servers, inherit from this class and override the | ||||
| 	/// handleResponse(char*, int) virtual member. | ||||
| { | ||||
| public: | ||||
| 	UDPClient(const std::string& address, Poco::UInt16 port, bool listen = false); | ||||
| 		/// Creates UDP client and connects it to specified address/port. | ||||
| 		/// If listen is true, a thread is launched where client can receive | ||||
| 		/// responses rom the server. | ||||
|  | ||||
| 	virtual ~UDPClient(); | ||||
| 		/// Destroys UDPClient. | ||||
|  | ||||
| 	void run(); | ||||
| 		/// Runs listener (typically invoked internally, in separate thread). | ||||
|  | ||||
| 	SocketAddress address() const; | ||||
| 		/// Returns client address. | ||||
|  | ||||
| 	SocketAddress peerAddress() const; | ||||
| 		/// Returns server address. | ||||
|  | ||||
| 	int send(void* data, int length); | ||||
| 		/// Sends data. | ||||
|  | ||||
| 	int send(const SocketBufVec& vec); | ||||
| 		/// Sends data. | ||||
|  | ||||
| 	virtual int handleResponse(char* buffer, int length); | ||||
| 		/// Handles responses from UDP server. For non-POCO UDP servers, | ||||
| 		/// this function should be overriden in inheriting class. | ||||
|  | ||||
| 	void setOption(int opt, int val); | ||||
| 		/// Sets socket option. | ||||
|  | ||||
| 	int getOption(int opt); | ||||
| 		/// Returns socket option. | ||||
|  | ||||
| 	void stop(); | ||||
| 		/// Stops the server reply receiving thread, if running. | ||||
|  | ||||
| 	int dataBacklog() const; | ||||
| 		/// Returns current server data backlog. | ||||
|  | ||||
| 	int errorBacklog(); | ||||
| 		/// Returns current server error backlog. | ||||
|  | ||||
| private: | ||||
| 	DatagramSocket      _socket; | ||||
| 	SocketAddress       _address; | ||||
| 	Thread*             _pThread; | ||||
| 	bool                _stop; | ||||
| 	Poco::AtomicCounter _dataBacklog; | ||||
| 	Poco::AtomicCounter _errorBacklog; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // | ||||
| // inlines | ||||
| // | ||||
|  | ||||
| inline SocketAddress UDPClient::address() const | ||||
| { | ||||
| 	return _socket.address(); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline SocketAddress UDPClient::peerAddress() const | ||||
| { | ||||
| 	return _address; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPClient::send(void* data, int length) | ||||
| { | ||||
| 	return _socket.sendBytes(data, length); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPClient::send(const SocketBufVec& vec) | ||||
| { | ||||
| 	return _socket.sendBytes(vec); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline void UDPClient::setOption(int opt, int val) | ||||
| { | ||||
| 	_socket.setOption(SOL_SOCKET, opt, val); | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPClient::getOption(int opt) | ||||
| { | ||||
| 	int val = 0; | ||||
| 	_socket.getOption(SOL_SOCKET, opt, val); | ||||
| 	return val; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline void UDPClient::stop() | ||||
| { | ||||
| 	_stop = true; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPClient::dataBacklog() const | ||||
| { | ||||
| 	return _dataBacklog; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPClient::errorBacklog() | ||||
| { | ||||
| 	return _errorBacklog; | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_UDPClient_INCLUDED | ||||
							
								
								
									
										381
									
								
								Net/include/Poco/Net/UDPHandler.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										381
									
								
								Net/include/Poco/Net/UDPHandler.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,381 @@ | ||||
| // | ||||
| // UDPHandler.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPHandler | ||||
| // | ||||
| // Definition of the UDPHandler class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_UDPHandler_INCLUDED | ||||
| #define Net_UDPHandler_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/RefCountedObject.h" | ||||
| #include "Poco/AutoPtr.h" | ||||
| #include "Poco/Runnable.h" | ||||
| #include "Poco/Thread.h" | ||||
| #include "Poco/MemoryPool.h" | ||||
| #include "Poco/Event.h" | ||||
| #include "Poco/Error.h" | ||||
| #include "Poco/Mutex.h" | ||||
| #include "Poco/StringTokenizer.h" | ||||
| #include <deque> | ||||
| #include <cstring> | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| typedef int UDPMsgSizeT; | ||||
| #define POCO_UDP_BUF_SIZE 1472 + sizeof(UDPMsgSizeT) + SocketAddress::MAX_ADDRESS_LENGTH | ||||
|  | ||||
|  | ||||
| template <std::size_t S = POCO_UDP_BUF_SIZE> | ||||
| class UDPHandlerImpl: public Runnable, public RefCountedObject | ||||
| 	/// UDP handler handles the data that arives to the UDP server. | ||||
| 	/// The class is thread-safe and runs in its own thread, so many handlers | ||||
| 	/// can be used in parallel.Handler manages and provides the storage | ||||
| 	/// (fixed-size memory blocks of S size) to the reader, which signals back | ||||
| 	/// to the handler when there is data or error ready for processing. | ||||
| 	/// Typically, user will inherit from this class and override processData() | ||||
| 	/// and processError() members to do the actual work. | ||||
| { | ||||
| public: | ||||
| 	typedef UDPMsgSizeT             MsgSizeT; | ||||
| 	typedef AutoPtr<UDPHandlerImpl> Ptr; | ||||
| 	typedef std::vector<Ptr>        List; | ||||
| 	typedef typename List::iterator Iterator; | ||||
| #ifdef POCO_HAVE_STD_ATOMICS | ||||
| 	typedef Poco::SpinlockMutex     DFMutex; | ||||
| #else | ||||
| 	typedef Poco::FastMutex         DFMutex; | ||||
| #endif | ||||
|  | ||||
| 	static const MsgSizeT BUF_STATUS_IDLE  = 0; | ||||
| 	static const MsgSizeT BUF_STATUS_BUSY  = -1; | ||||
| 	static const MsgSizeT BUF_STATUS_ERROR = -2; | ||||
|  | ||||
| 	UDPHandlerImpl(std::size_t bufListSize = 1000, std::ostream* pErr = 0): | ||||
| 		_thread("UDPHandlerImpl"), | ||||
| 		_stop(false), | ||||
| 		_done(false), | ||||
| 		_bufListSize(bufListSize), | ||||
| 		_blockSize(S), | ||||
| 		_dataBacklog(0), | ||||
| 		_errorBacklog(0), | ||||
| 		_pErr(pErr) | ||||
| 		/// Creates the UDPHandlerImpl. | ||||
| 	{ | ||||
| 		_thread.start(*this); | ||||
| 	} | ||||
|  | ||||
| 	~UDPHandlerImpl() | ||||
| 		/// Destroys the UDPHandlerImpl. | ||||
| 	{ | ||||
| 		stop(); | ||||
| 		_thread.join(); | ||||
| 	} | ||||
|  | ||||
| 	std::size_t blockSize() const | ||||
| 		/// Returns the memory block size. | ||||
| 	{ | ||||
| 		return _blockSize; | ||||
| 	} | ||||
|  | ||||
| 	char* next(poco_socket_t sock) | ||||
| 		/// Creates the next BufList entry, and returns | ||||
| 		/// the pointers to the newly created guard/buffer. | ||||
| 		/// If mutex lock times out, returns null pointer. | ||||
| 	{ | ||||
| 		char* ret = 0; | ||||
| 		if (_mutex.tryLock(10)) | ||||
| 		{ | ||||
| 			if (_buffers[sock].size() < _bufListSize) // building buffer list | ||||
| 			{ | ||||
| 				makeNext(sock, &ret); | ||||
| 			} | ||||
| 			else if (*reinterpret_cast<MsgSizeT*>(*_bufIt[sock]) != 0) // busy | ||||
| 			{ | ||||
| 				makeNext(sock, &ret); | ||||
| 			} | ||||
| 			else if (*reinterpret_cast<MsgSizeT*>(*_bufIt[sock]) == 0) // available | ||||
| 			{ | ||||
| 				setBusy(*_bufIt[sock]); | ||||
| 				ret = *_bufIt[sock]; | ||||
| 				if (++_bufIt[sock] == _buffers[sock].end()) | ||||
| 				{ | ||||
| 					_bufIt[sock] = _buffers[sock].begin(); | ||||
| 				} | ||||
| 			} | ||||
| 			else // last resort, full scan | ||||
| 			{ | ||||
| 				BufList::iterator it = _buffers[sock].begin(); | ||||
| 				BufList::iterator end = _buffers[sock].end(); | ||||
| 				for (; it != end; ++it) | ||||
| 				{ | ||||
| 					if (*reinterpret_cast<MsgSizeT*>(*_bufIt[sock]) == 0) // available | ||||
| 					{ | ||||
| 						setBusy(*it); | ||||
| 						ret = *it; | ||||
| 						_bufIt[sock] = it; | ||||
| 						if (++_bufIt[sock] == _buffers[sock].end()) | ||||
| 						{ | ||||
| 							_bufIt[sock] = _buffers[sock].begin(); | ||||
| 						} | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 				if (it == end) makeNext(sock, &ret); | ||||
| 			} | ||||
| 			_mutex.unlock(); | ||||
| 		} | ||||
| 		return ret; | ||||
| 	} | ||||
|  | ||||
| 	void notify() | ||||
| 		/// Sets the ready event. | ||||
| 	{ | ||||
| 		_ready.set(); | ||||
| 	} | ||||
|  | ||||
| 	void run() | ||||
| 		/// Does the work. | ||||
| 	{ | ||||
| 		while (!_stop) | ||||
| 		{ | ||||
| 			_ready.wait(); | ||||
| 			if (_stop) break; | ||||
| 			if (_mutex.tryLock(10)) | ||||
| 			{ | ||||
| 				BufMap::iterator it = _buffers.begin(); | ||||
| 				BufMap::iterator end = _buffers.end(); | ||||
| 				for (; it != end; ++it) | ||||
| 				{ | ||||
| 					BufList::iterator lIt = it->second.begin(); | ||||
| 					BufList::iterator lEnd = it->second.end(); | ||||
| 					for (; lIt != lEnd; ++lIt) | ||||
| 					{ | ||||
| 						if (hasData(*lIt)) | ||||
| 						{ | ||||
| 							processData(*lIt); | ||||
| 							--_dataBacklog; | ||||
| 							setIdle(*lIt); | ||||
| 						} | ||||
| 						else if (isError(*lIt)) | ||||
| 						{ | ||||
| 							processError(*lIt); | ||||
| 							++_errorBacklog; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				_mutex.unlock(); | ||||
| 			} | ||||
| 		} | ||||
| 		_done = true; | ||||
| 	} | ||||
|  | ||||
| 	void stop() | ||||
| 		/// Signals the handler to stop. | ||||
| 	{ | ||||
| 		_stop = true; | ||||
| 		_ready.set(); | ||||
| 	} | ||||
|  | ||||
| 	bool stopped() const | ||||
| 		/// Returns true if the handler was signalled to stop. | ||||
| 	{ | ||||
| 		return _stop == true; | ||||
| 	} | ||||
|  | ||||
| 	bool done() const | ||||
| 		/// Returns true if handler is done (ie. run() thread | ||||
| 		/// entrypoint end was reached). | ||||
| 	{ | ||||
| 		return _done; | ||||
| 	} | ||||
|  | ||||
| 	void setBusy(char*& pBuf) | ||||
| 		/// Flags the buffer as busy (usually done before buffer | ||||
| 		/// is passed to the reader. | ||||
| 	{ | ||||
| 		setStatus(pBuf, BUF_STATUS_BUSY); | ||||
| 	} | ||||
|  | ||||
| 	void setIdle(char*& pBuf) | ||||
| 		/// Flags the buffer as idle, ie. not used by reader or | ||||
| 		/// waiting to be processed, so ready to be reused for | ||||
| 		/// reading. | ||||
| 	{ | ||||
| 		setStatus(pBuf, BUF_STATUS_IDLE); | ||||
| 	} | ||||
|  | ||||
| 	AtomicCounter::ValueType setData(char*& pBuf, MsgSizeT sz) | ||||
| 		/// Flags the buffer as containing data. | ||||
| 	{ | ||||
| 		setStatus(pBuf, sz); | ||||
| 		return ++_dataBacklog; | ||||
| 	} | ||||
|  | ||||
| 	AtomicCounter::ValueType setError(char*& pBuf, const std::string& err) | ||||
| 		/// Sets the error into the buffer. | ||||
| 	{ | ||||
| 		std::size_t availLen = S - sizeof(MsgSizeT); | ||||
| 		std::memset(pBuf + sizeof(MsgSizeT), 0, availLen); | ||||
| 		std::size_t msgLen = err.length(); | ||||
| 		if (msgLen) | ||||
| 		{ | ||||
| 			if (msgLen >= availLen) msgLen = availLen; | ||||
| 			std::memcpy(pBuf + sizeof(MsgSizeT), err.data(), msgLen); | ||||
| 		} | ||||
| 		setStatus(pBuf, BUF_STATUS_ERROR); | ||||
| 		return --_errorBacklog; | ||||
| 	} | ||||
|  | ||||
| 	bool hasData(char*& pBuf) | ||||
| 		/// Returns true if buffer contains data. | ||||
| 	{ | ||||
| 		DFMutex::ScopedLock l(_dfMutex); | ||||
| 		return *reinterpret_cast<MsgSizeT*>(pBuf) > 0; | ||||
| 	} | ||||
|  | ||||
| 	bool isError(char*& pBuf) | ||||
| 		/// Returns true if buffer contains error. | ||||
| 	{ | ||||
| 		DFMutex::ScopedLock l(_dfMutex); | ||||
| 		return *reinterpret_cast<MsgSizeT*>(pBuf) == BUF_STATUS_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	static Poco::UInt16 offset() | ||||
| 		/// Returns buffer data offset. | ||||
| 	{ | ||||
| 		return sizeof(MsgSizeT) + sizeof(poco_socklen_t) + SocketAddress::MAX_ADDRESS_LENGTH; | ||||
| 	} | ||||
|  | ||||
| 	static MsgSizeT payloadSize(char* buf) | ||||
| 	{ | ||||
| 		return *((MsgSizeT*) buf); | ||||
| 	} | ||||
|  | ||||
| 	static SocketAddress address(char* buf) | ||||
| 	{ | ||||
| 		poco_socklen_t* len = reinterpret_cast<poco_socklen_t*>(buf + sizeof(MsgSizeT)); | ||||
| 		struct sockaddr* pSA = reinterpret_cast<struct sockaddr*>(buf + sizeof(MsgSizeT) + sizeof(poco_socklen_t)); | ||||
| 		return SocketAddress(pSA, *len); | ||||
| 	} | ||||
|  | ||||
| 	static char* payload(char* buf) | ||||
| 		/// Returns pointer to payload. | ||||
| 		/// | ||||
| 		/// Total message size is S. | ||||
| 		/// | ||||
| 		/// Data message layout is as follows: | ||||
| 		/// | ||||
| 		/// +------------------------+------------------------+-----------------------------------+--------- ~ ---+ | ||||
| 		/// | sizeof(MsgSizeT) bytes | sizeof(poco_socklen_t) | SocketAddress::MAX_ADDRESS_LENGTH |    payload    | | ||||
| 		/// +------------------------+------------------------+-----------------------------------+--------- ~ ---+ | ||||
| 	{ | ||||
| 		return buf + offset(); | ||||
| 	} | ||||
|  | ||||
| 	static Poco::StringTokenizer payload(char* buf, char delimiter) | ||||
| 		/// Returns tokenized payload. | ||||
| 		/// Used when multiple logical messages are contained in a | ||||
| 		/// single physical message. Messages must be ASCII, as well as | ||||
| 		/// unambiguously delimited in order for this function to succeed. | ||||
| 	{ | ||||
| 		return Poco::StringTokenizer(payload(buf), std::string(1, delimiter), StringTokenizer::TOK_IGNORE_EMPTY); | ||||
| 	} | ||||
|  | ||||
| 	static char* error(char* buf) | ||||
| 		/// Returns pointer to the erro message payload. | ||||
| 		/// | ||||
| 		/// Total message size is S. | ||||
| 		/// | ||||
| 		/// Error message layout is as follows: | ||||
| 		/// | ||||
| 		/// +------------------------+--------- ~ ---+ | ||||
| 		/// | sizeof(MsgSizeT) bytes |    payload    | | ||||
| 		/// +------------------------+--------- ~ ---+ | ||||
| 	{ | ||||
| 		return buf + sizeof(MsgSizeT); | ||||
| 	} | ||||
|  | ||||
| 	virtual void processData(char*) | ||||
| 		/// Caled when data is received by reader. | ||||
| 		/// | ||||
| 		/// No-op here, must be overriden by inheriting | ||||
| 		/// class in order to do useful work. | ||||
| 	{ | ||||
| 	}; | ||||
|  | ||||
| 	virtual void processError(char* buf) | ||||
| 		/// Caled when error is detected by reader. | ||||
| 		/// | ||||
| 		/// Only functional if stream pointer is provided | ||||
| 		/// to the handler, otherwise it must be overriden | ||||
| 		/// by inheriting class in order to do useful work. | ||||
| 	{ | ||||
| 		if (_pErr) *_pErr << error(buf) << std::endl; | ||||
| 		setIdle(buf); | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	typedef std::deque<char*>                BufList; | ||||
| 	typedef std::map<poco_socket_t, BufList> BufMap; | ||||
| 	typedef typename BufList::iterator       BLIt; | ||||
| 	typedef std::map<poco_socket_t, BLIt>    BufIt; | ||||
| 	typedef Poco::FastMemoryPool<char[S]>    MemPool; | ||||
|  | ||||
| 	void setStatusImpl(char*& pBuf, MsgSizeT status) | ||||
| 	{ | ||||
| 		*reinterpret_cast<MsgSizeT*>(pBuf) = status; | ||||
| 	} | ||||
|  | ||||
| 	void setStatus(char*& pBuf, MsgSizeT status) | ||||
| 	{ | ||||
| 		DFMutex::ScopedLock l(_dfMutex); | ||||
| 		setStatusImpl(pBuf, status); | ||||
| 	} | ||||
|  | ||||
| 	void makeNext(poco_socket_t sock, char** ret) | ||||
| 	{ | ||||
| 		_buffers[sock].push_back(reinterpret_cast<char*>(_memPool.get())); | ||||
| 		setStatusImpl(_buffers[sock].back(), BUF_STATUS_BUSY); | ||||
| 		_bufIt[sock] = _buffers[sock].begin(); | ||||
| 		*ret = _buffers[sock].back(); | ||||
| 	} | ||||
|  | ||||
| 	Poco::Event       _ready; | ||||
| 	Poco::Thread      _thread; | ||||
| 	bool              _stop; | ||||
| 	bool              _done; | ||||
| 	BufMap            _buffers; | ||||
| 	BufIt             _bufIt; | ||||
| 	std::size_t       _bufListSize; | ||||
| 	const std::size_t _blockSize; | ||||
| 	MemPool           _memPool; | ||||
| 	AtomicCounter     _dataBacklog; | ||||
| 	AtomicCounter     _errorBacklog; | ||||
| 	Poco::FastMutex   _mutex; | ||||
| 	DFMutex           _dfMutex; | ||||
| 	std::ostream*     _pErr; | ||||
| }; | ||||
|  | ||||
|  | ||||
| typedef UDPHandlerImpl<POCO_UDP_BUF_SIZE> UDPHandler; | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_UDPHandler_INCLUDED | ||||
							
								
								
									
										106
									
								
								Net/include/Poco/Net/UDPServer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								Net/include/Poco/Net/UDPServer.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| // | ||||
| // UDPServer.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPServer | ||||
| // | ||||
| // Definition of the UDPServer class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_UDPServer_INCLUDED | ||||
| #define Net_UDPServer_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/DatagramSocket.h" | ||||
| #include "Poco/Net/PollSet.h" | ||||
| #include "Poco/Net/UDPHandler.h" | ||||
| #include "Poco/Net/UDPServerParams.h" | ||||
| #include "Poco/Net/UDPSocketReader.h" | ||||
| #include "Poco/Net/SingleSocketPoller.h" | ||||
| #include "Poco/Net/MultiSocketPoller.h" | ||||
| #include <map> | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| template <std::size_t S = POCO_UDP_BUF_SIZE, | ||||
| 		typename P = SingleSocketPoller<S> > | ||||
| class UDPServerImpl: public Poco::Runnable | ||||
| 	/// UDP server, runs in its own thread and owns a poller, to which | ||||
| 	/// data arrival and discovery is delegated. See SingleSocketPoller and | ||||
| 	/// MultipleSocketPoller for more information. | ||||
| { | ||||
| public: | ||||
| 	UDPServerImpl(typename UDPHandlerImpl<S>::List& handlers, const Poco::Net::SocketAddress& sa): | ||||
| 		_poller(handlers, sa), | ||||
| 		_thread("UDPServer"), | ||||
| 		_stop(false) | ||||
| 		/// Creates the UDPServer and binds it to | ||||
| 		/// the given address. | ||||
| 	{ | ||||
| 		_thread.start(*this); | ||||
| 	} | ||||
|  | ||||
| 	UDPServerImpl(typename UDPHandlerImpl<S>::List& handlers, const UDPServerParams& params): | ||||
| 		_poller(handlers, params), | ||||
| 		_thread("UDPServer"), | ||||
| 		_stop(false) | ||||
| 		/// Creates the UDPServer and binds it to | ||||
| 		/// the given address. | ||||
| 	{ | ||||
| 		_thread.start(*this); | ||||
| 	} | ||||
|  | ||||
| 	~UDPServerImpl() | ||||
| 		/// Destroys the UDPServer. | ||||
| 	{ | ||||
| 		_stop = true; | ||||
| 		_poller.stop(); | ||||
| 		while (!_poller.done()) Thread::sleep(10); | ||||
| 		_thread.join(); | ||||
| 	} | ||||
|  | ||||
| 	Poco::UInt16 port() const | ||||
| 		/// Returns the port the server is | ||||
| 		/// listening on. | ||||
| 	{ | ||||
| 		return _poller.port(); | ||||
| 	} | ||||
|  | ||||
| 	Poco::Net::SocketAddress address() const | ||||
| 		/// Returns the address of the server. | ||||
| 	{ | ||||
| 		return _poller.address(); | ||||
| 	} | ||||
|  | ||||
| 	void run() | ||||
| 		/// Does the work. | ||||
| 	{ | ||||
| 		while (!_stop) _poller.poll(); | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	P            _poller; | ||||
| 	Poco::Thread _thread; | ||||
| 	bool         _stop; | ||||
| }; | ||||
|  | ||||
|  | ||||
| typedef UDPServerImpl<POCO_UDP_BUF_SIZE, SingleSocketPoller<POCO_UDP_BUF_SIZE> > UDPServer; | ||||
| typedef UDPServerImpl<POCO_UDP_BUF_SIZE, MultiSocketPoller<POCO_UDP_BUF_SIZE> > UDPMultiServer; | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_UDPServer_INCLUDED | ||||
							
								
								
									
										122
									
								
								Net/include/Poco/Net/UDPServerParams.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								Net/include/Poco/Net/UDPServerParams.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| // | ||||
| // UDPServerParams.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPServerParams | ||||
| // | ||||
| // Definition of the UDPServerParams class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_UDPServerParams_INCLUDED | ||||
| #define Net_UDPServerParams_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/SocketAddress.h" | ||||
| #include "Poco/Timespan.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| class Net_API UDPServerParams | ||||
| 	/// A class encapsulating UDP server parameters. | ||||
| { | ||||
| public: | ||||
| 	UDPServerParams(const Poco::Net::SocketAddress& sa, | ||||
| 		int nSockets = 10, | ||||
| 		Poco::Timespan timeout = 250000, | ||||
| 		std::size_t handlerBufListSize = 1000, | ||||
| 		bool notifySender = false, | ||||
| 		int  backlogThreshold = 10); | ||||
| 		/// Creates UDPServerParams. | ||||
|  | ||||
| 	~UDPServerParams(); | ||||
| 		/// Destroys UDPServerParams. | ||||
|  | ||||
| 	const Poco::Net::SocketAddress& address() const; | ||||
| 		/// Returns the server address. | ||||
|  | ||||
| 	Poco::Timespan timeout() const; | ||||
| 		/// Returns polling timeout. | ||||
|  | ||||
| 	int numberOfSockets() const; | ||||
| 		/// Returns nuber of sockets for the server. | ||||
|  | ||||
| 	std::size_t handlerBufListSize() const; | ||||
| 		/// Returns the number of handler buffers allocated | ||||
| 		/// before buffers start being reused. | ||||
|  | ||||
| 	bool notifySender() const; | ||||
| 		/// Returns the flag inidcating whether server | ||||
| 		/// should send notifications back to the client. | ||||
|  | ||||
| 	int backlogThreshold() const; | ||||
| 		/// Size of mesage or error backlogs at which server | ||||
| 		/// reports backlogs back to the client. Only meaningful | ||||
| 		/// if notifySender() is true. | ||||
|  | ||||
| private: | ||||
| 	UDPServerParams(); | ||||
|  | ||||
| 	Poco::Net::SocketAddress _sa; | ||||
| 	int                      _nSockets; | ||||
| 	Poco::Timespan           _timeout; | ||||
| 	std::size_t              _handlerBufListSize; | ||||
| 	bool                     _notifySender; | ||||
| 	int                      _backlogThreshold; | ||||
| }; | ||||
|  | ||||
|  | ||||
| // | ||||
| // inlines | ||||
| // | ||||
|  | ||||
| inline const Poco::Net::SocketAddress& UDPServerParams::address() const | ||||
| { | ||||
| 	return _sa; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPServerParams::numberOfSockets() const | ||||
| { | ||||
| 	return _nSockets; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline Poco::Timespan UDPServerParams::timeout() const | ||||
| { | ||||
| 	return _timeout; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline std::size_t UDPServerParams::handlerBufListSize() const | ||||
| { | ||||
| 	return _handlerBufListSize; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline bool UDPServerParams::notifySender() const | ||||
| { | ||||
| 	return _notifySender; | ||||
| } | ||||
|  | ||||
|  | ||||
| inline int UDPServerParams::backlogThreshold() const | ||||
| { | ||||
| 	return _backlogThreshold; | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_UDPServerParams_INCLUDED | ||||
							
								
								
									
										222
									
								
								Net/include/Poco/Net/UDPSocketReader.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										222
									
								
								Net/include/Poco/Net/UDPSocketReader.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,222 @@ | ||||
| // | ||||
| // UDPSocketReader.h | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPSocketReader | ||||
| // | ||||
| // Definition of the UDPSocketReader class. | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #ifndef Net_UDPSocketReader_INCLUDED | ||||
| #define Net_UDPSocketReader_INCLUDED | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/Net.h" | ||||
| #include "Poco/Net/DatagramSocket.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| template <std::size_t S = POCO_UDP_BUF_SIZE> | ||||
| class UDPSocketReader | ||||
| 	/// UDPSocketReader is responsible for UDP socket I/O operations. | ||||
| 	/// When data or error is detected on a socket, the reader is invoked | ||||
| 	/// to do the I/O. After the data is read, it is passed on, to one | ||||
| 	/// of the handlers for processing. Errors are also passed to a | ||||
| 	/// handler for handling (if any configured). | ||||
| 	/// Depending on settings, data senders may be notified of the handler's | ||||
| 	/// data and error backlogs. | ||||
| { | ||||
| private: | ||||
| 	class Counter | ||||
| 	{ | ||||
| 	public: | ||||
| 		Counter(): val(0) | ||||
| 		{ | ||||
| 		} | ||||
|  | ||||
| 		operator AtomicCounter::ValueType () | ||||
| 		{ | ||||
| 			return static_cast<AtomicCounter::ValueType>(val); | ||||
| 		} | ||||
|  | ||||
| 		Counter& operator=(AtomicCounter::ValueType value) | ||||
| 		{ | ||||
| 			val = static_cast<Poco::Int32>(value); | ||||
| 			return *this; | ||||
| 		} | ||||
|  | ||||
| 		Poco::Int32 operator++() | ||||
| 		{ | ||||
| 			return ++val; | ||||
| 		} | ||||
|  | ||||
| 		Counter& operator++(int) | ||||
| 		{ | ||||
| 			return val++; | ||||
| 		} | ||||
|  | ||||
| 	private: | ||||
| 		Poco::Int32 val; | ||||
| 	}; | ||||
|  | ||||
| public: | ||||
| 	UDPSocketReader(typename UDPHandlerImpl<S>::List& handlers, int backlogThreshold = 0): | ||||
| 		_handlers(handlers), | ||||
| 		_handler(_handlers.begin()), | ||||
| 		_backlogThreshold(backlogThreshold) | ||||
| 		/// Creates the UDPSocketReader. | ||||
| 	{ | ||||
| 		poco_assert(_handler != _handlers.end()); | ||||
| 	} | ||||
|  | ||||
| 	UDPSocketReader(typename UDPHandlerImpl<S>::List& handlers, const UDPServerParams& serverParams): | ||||
| 		_handlers(handlers), | ||||
| 		_handler(_handlers.begin()), | ||||
| 		_backlogThreshold(serverParams.backlogThreshold()) | ||||
| 		/// Creates the UDPSocketReader. | ||||
| 	{ | ||||
| 		poco_assert(_handler != _handlers.end()); | ||||
| 	} | ||||
|  | ||||
| 	~UDPSocketReader() | ||||
| 		/// Destroys the UDPSocketReader. | ||||
| 	{ | ||||
| 	} | ||||
|  | ||||
| 	void read(DatagramSocket& sock) | ||||
| 		/// Reads data from the socket and passes it to the next handler. | ||||
| 		/// Errors are also passed to the handler. If object is configured | ||||
| 		/// for replying to sender and data or error backlog threshold is | ||||
| 		/// exceeded, sender is notified of the current backlog size. | ||||
| 	{ | ||||
| 		typedef typename UDPHandlerImpl<S>::MsgSizeT RT; | ||||
| 		char* p = 0; | ||||
| 		struct sockaddr* pSA = 0; | ||||
| 		poco_socklen_t* pAL = 0; | ||||
| 		poco_socket_t sockfd = sock.impl()->sockfd(); | ||||
| 		nextHandler(); | ||||
| 		try | ||||
| 		{ | ||||
| 			p = handler().next(sockfd); | ||||
| 			if (p) | ||||
| 			{ | ||||
| 				Poco::UInt16 off = handler().offset(); | ||||
| 				poco_socklen_t* pAL = reinterpret_cast<poco_socklen_t*>(p + sizeof(RT)); | ||||
| 				*pAL = SocketAddress::MAX_ADDRESS_LENGTH; | ||||
| 				struct sockaddr* pSA = reinterpret_cast<struct sockaddr*>(p + sizeof(RT) + sizeof(poco_socklen_t)); | ||||
| 				RT ret = sock.receiveFrom(p + off, S - off - 1, &pSA, &pAL); | ||||
| 				if (ret < 0) | ||||
| 				{ | ||||
| 					AtomicCounter::ValueType errors = setError(sock.impl()->sockfd(), p, Error::getMessage(Error::last())); | ||||
| 					if (_backlogThreshold > 0 && errors > _backlogThreshold && errors != _errorBacklog[sockfd]) | ||||
| 					{ | ||||
| 						Poco::Int32 err = static_cast<Poco::Int32>(errors); | ||||
| 						sock.sendTo(&err, sizeof(Poco::Int32), SocketAddress(pSA, *pAL)); | ||||
| 						_errorBacklog[sockfd] = errors; | ||||
| 					} | ||||
| 					return; | ||||
| 				} | ||||
| 				AtomicCounter::ValueType data = handler().setData(p, ret); | ||||
| 				p[off + ret] = 0; // for ascii convenience, zero-terminate | ||||
| 				if (_backlogThreshold > 0 && data > _backlogThreshold && data != _dataBacklog[sockfd]) | ||||
| 				{ | ||||
| 					Poco::Int32 d = static_cast<Poco::Int32>(data); | ||||
| 					sock.sendTo(&d, sizeof(Poco::Int32), SocketAddress(pSA, *pAL)); | ||||
| 					_dataBacklog[sockfd] = data; | ||||
| 				} | ||||
| 			} | ||||
| 			else return; | ||||
| 		} | ||||
| 		catch (Poco::Exception& exc) | ||||
| 		{ | ||||
| 			AtomicCounter::ValueType errors = setError(sock.impl()->sockfd(), p, exc.displayText()); | ||||
| 			if (_backlogThreshold > 0 && errors > _backlogThreshold && errors != _errorBacklog[sockfd] && pSA && pAL) | ||||
| 			{ | ||||
| 				Poco::Int32 err = static_cast<Poco::Int32>(errors); | ||||
| 				sock.sendTo(&err, sizeof(Poco::Int32), SocketAddress(pSA, *pAL)); | ||||
| 				_errorBacklog[sockfd] = errors; | ||||
| 			} | ||||
| 		} | ||||
| 		handler().notify(); | ||||
| 	} | ||||
|  | ||||
| 	bool handlerStopped() const | ||||
| 		/// Returns true if all handlers are stopped. | ||||
| 	{ | ||||
| 		bool stopped = true; | ||||
| 		typename UDPHandlerImpl<S>::List::iterator it = _handlers.begin(); | ||||
| 		typename UDPHandlerImpl<S>::List::iterator end = _handlers.end(); | ||||
| 		for (; it != end; ++it) stopped = stopped && (*it)->stopped(); | ||||
| 		return stopped; | ||||
| 	} | ||||
|  | ||||
| 	void stopHandler() | ||||
| 		/// Stops all handlers. | ||||
| 	{ | ||||
| 		typename UDPHandlerImpl<S>::List::iterator it = _handlers.begin(); | ||||
| 		typename UDPHandlerImpl<S>::List::iterator end = _handlers.end(); | ||||
| 		for (; it != end; ++it) (*it)->stop(); | ||||
| 	} | ||||
|  | ||||
| 	bool handlerDone() const | ||||
| 		/// Returns true if all handlers are done processing data. | ||||
| 	{ | ||||
| 		bool done = true; | ||||
| 		typename UDPHandlerImpl<S>::List::iterator it = _handlers.begin(); | ||||
| 		typename UDPHandlerImpl<S>::List::iterator end = _handlers.end(); | ||||
| 		for (; it != end; ++it) done = done && (*it)->done(); | ||||
| 		return done; | ||||
| 	} | ||||
|  | ||||
| 	AtomicCounter::ValueType setError(poco_socket_t sock, char* buf = 0, const std::string& err = "") | ||||
| 		/// Sets error to the provided buffer buf. If the buffer is null, a new buffer is obtained | ||||
| 		/// from handler. | ||||
| 		/// If successful, returns the handler's eror backlog size, otherwise returns zero. | ||||
| 	{ | ||||
| 		if (!buf) buf = handler().next(sock); | ||||
| 		if (buf) return handler().setError(buf, err.empty() ? Error::getMessage(Error::last()) : err); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| private: | ||||
| 	void nextHandler() | ||||
| 		/// Re-points the handler iterator to the next handler in | ||||
| 		/// round-robin fashion. | ||||
| 	{ | ||||
| 		poco_assert_dbg (_handler != _handlers.end()); | ||||
| 		if (++_handler == _handlers.end()) _handler = _handlers.begin(); | ||||
| 	} | ||||
|  | ||||
| 	UDPHandlerImpl<S>& handler() | ||||
| 		/// Returns the reference to the current handler. | ||||
| 	{ | ||||
| 		poco_assert_dbg (_handler != _handlers.end()); | ||||
| 		return **_handler; | ||||
| 	} | ||||
|  | ||||
| 	typedef typename UDPHandlerImpl<S>::List           HandlerList; | ||||
| 	typedef typename UDPHandlerImpl<S>::List::iterator HandlerIterator; | ||||
| 	typedef std::map<poco_socket_t, Counter>           CounterMap; | ||||
|  | ||||
| 	HandlerList&    _handlers; | ||||
| 	HandlerIterator _handler; | ||||
| 	CounterMap      _dataBacklog; | ||||
| 	CounterMap      _errorBacklog; | ||||
| 	int             _backlogThreshold; | ||||
| }; | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|  | ||||
|  | ||||
| #endif // Net_UDPSocketReader_INCLUDED | ||||
| @@ -21,7 +21,6 @@ | ||||
| #include "Poco/Net/StreamSocketImpl.h" | ||||
| #include "Poco/Buffer.h" | ||||
| #include "Poco/Random.h" | ||||
| #include "Poco/Buffer.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| @@ -46,7 +45,7 @@ public: | ||||
| 	virtual int receiveBytes(void* buffer, int length, int flags); | ||||
| 		/// Receives a WebSocket protocol frame. | ||||
| 		 | ||||
| 	virtual int receiveBytes(Poco::Buffer<char>& buffer, int flags); | ||||
| 	virtual int receiveBytes(Poco::Buffer<char>& buffer, int flags = 0, const Poco::Timespan& span = 0); | ||||
| 		/// Receives a WebSocket protocol frame. | ||||
|  | ||||
| 	virtual SocketImpl* acceptConnection(SocketAddress& clientAddr); | ||||
|   | ||||
| @@ -316,7 +316,7 @@ std::string DNS::decodeIDNLabel(const std::string& encodedIDN) | ||||
| 			Poco::UTF32Encoding utf32; | ||||
| 			Poco::UTF8Encoding utf8; | ||||
| 			Poco::TextConverter converter(utf32, utf8); | ||||
| 			converter.convert(buffer, size*sizeof(punycode_uint), decoded); | ||||
| 			converter.convert(buffer, static_cast<int>(size*sizeof(punycode_uint)), decoded); | ||||
| 		} | ||||
| 		else throw DNSException("Failed to decode IDN label: ", encodedIDN); | ||||
| 	} | ||||
|   | ||||
| @@ -93,22 +93,64 @@ int DatagramSocket::sendBytes(const void* buffer, int length, int flags) | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::sendBytes(const SocketBufVec& buffers, int flags) | ||||
| { | ||||
| 	return impl()->sendBytes(buffers, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveBytes(void* buffer, int length, int flags) | ||||
| { | ||||
| 	return impl()->receiveBytes(buffer, length, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveBytes(SocketBufVec& buffers, int flags) | ||||
| { | ||||
| 	return impl()->receiveBytes(buffers, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveBytes(Poco::Buffer<char>& buffer, int flags, const Poco::Timespan& timeout) | ||||
| { | ||||
| 	return impl()->receiveBytes(buffer, flags, timeout); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::sendTo(const void* buffer, int length, const SocketAddress& address, int flags) | ||||
| { | ||||
| 	return impl()->sendTo(buffer, length, address, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::sendTo(const SocketBufVec& buffers, const SocketAddress& address, int flags) | ||||
| { | ||||
| 	return impl()->sendTo(buffers, address, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveFrom(void* buffer, int length, SocketAddress& address, int flags) | ||||
| { | ||||
| 	return impl()->receiveFrom(buffer, length, address, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveFrom(void* buffer, int length, struct sockaddr** ppSA, poco_socklen_t** saLen, int flags) | ||||
| { | ||||
| 	return impl()->receiveFrom(buffer, length, ppSA, saLen, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveFrom(SocketBufVec& buffers, SocketAddress& address, int flags) | ||||
| { | ||||
| 	return impl()->receiveFrom(buffers, address, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int DatagramSocket::receiveFrom(SocketBufVec& buffers, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags) | ||||
| { | ||||
| 	return impl()->receiveFrom(buffers, ppSA, ppSALen, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|   | ||||
| @@ -14,11 +14,10 @@ | ||||
|  | ||||
| #include "Poco/Net/SocketAddress.h" | ||||
| #include "Poco/Net/ICMPClient.h" | ||||
| #include "Poco/Net/ICMPSocket.h" | ||||
| #include "Poco/Net/NetException.h" | ||||
| #include "Poco/Channel.h" | ||||
| #include "Poco/Message.h" | ||||
| #include "Poco/Exception.h" | ||||
| #include "Poco/Format.h" | ||||
| #include <sstream> | ||||
|  | ||||
|  | ||||
| @@ -62,21 +61,27 @@ int ICMPClient::ping(SocketAddress& address, int repeat) const | ||||
| 	if (repeat <= 0) return 0; | ||||
|  | ||||
| 	ICMPSocket icmpSocket(_family, _dataSize, _ttl, _timeout); | ||||
| 	SocketAddress returnAddress; | ||||
|  | ||||
| 	ICMPEventArgs eventArgs(address, repeat, icmpSocket.dataSize(), icmpSocket.ttl()); | ||||
| 	pingBegin.notify(this, eventArgs); | ||||
|  | ||||
| 	for (int i = 0; i < repeat; ++i) | ||||
| 	{ | ||||
| 		icmpSocket.sendTo(address); | ||||
| 		++eventArgs; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			int t = icmpSocket.receiveFrom(returnAddress); | ||||
| 			eventArgs.setReplyTime(i, t); | ||||
| 			pingReply.notify(this, eventArgs); | ||||
| 			int sent = icmpSocket.sendTo(address); | ||||
| 			if (icmpSocket.packetSize() == sent) | ||||
| 			{ | ||||
| 				SocketAddress requestAddress(address); | ||||
| 				++eventArgs; | ||||
| 				int t = icmpSocket.receiveFrom(address); | ||||
| 				poco_assert (address.host() == requestAddress.host()); | ||||
| 				eventArgs.setReplyTime(i, t); | ||||
| 				pingReply.notify(this, eventArgs); | ||||
| 			} | ||||
| 			else | ||||
| 				throw ICMPException(Poco::format("Error sending ICMP packet " | ||||
| 					"(sent=%d, expected=%d)", sent, icmpSocket.packetSize())); | ||||
| 		} | ||||
| 		catch (TimeoutException&) | ||||
| 		{ | ||||
| @@ -89,16 +94,14 @@ int ICMPClient::ping(SocketAddress& address, int repeat) const | ||||
| 		catch (ICMPException& ex) | ||||
| 		{ | ||||
| 			std::ostringstream os; | ||||
| 			os << address.host().toString() << ": " << ex.what(); | ||||
| 			os << address.host().toString() << ": " << ex.displayText(); | ||||
| 			eventArgs.setError(i, os.str()); | ||||
| 			pingError.notify(this, eventArgs); | ||||
| 			continue; | ||||
| 		} | ||||
| 		catch (Exception& ex) | ||||
| 		{ | ||||
| 			std::ostringstream os; | ||||
| 			os << ex.displayText(); | ||||
| 			eventArgs.setError(i, os.str()); | ||||
| 			eventArgs.setError(i, ex.displayText()); | ||||
| 			pingError.notify(this, eventArgs); | ||||
| 			continue; | ||||
| 		} | ||||
| @@ -125,23 +128,21 @@ int ICMPClient::ping(SocketAddress& address, | ||||
| 	if (repeat <= 0) return 0; | ||||
|  | ||||
| 	ICMPSocket icmpSocket(family, dataSize, ttl, timeout); | ||||
| 	SocketAddress returnAddress; | ||||
| 	int received = 0; | ||||
|  | ||||
| 	for (int i = 0; i < repeat; ++i) | ||||
| 	{ | ||||
| 		icmpSocket.sendTo(address); | ||||
| 		try | ||||
| 		{ | ||||
| 			icmpSocket.receiveFrom(returnAddress); | ||||
| 			++received; | ||||
| 		} | ||||
| 		catch (TimeoutException&) | ||||
| 		{ | ||||
| 		} | ||||
| 		catch (ICMPException&) | ||||
| 		{ | ||||
| 			SocketAddress requestAddress(address); | ||||
| 			if (icmpSocket.sendTo(address) == icmpSocket.packetSize()) | ||||
| 			{ | ||||
| 				icmpSocket.receiveFrom(address); | ||||
| 				poco_assert (address.host() == requestAddress.host()); | ||||
| 				++received; | ||||
| 			} | ||||
| 		} | ||||
| 		catch (Exception&) { } | ||||
| 	} | ||||
| 	return received; | ||||
| } | ||||
|   | ||||
| @@ -95,9 +95,9 @@ bool ICMPPacket::validReplyID(Poco::UInt8* buffer, int length) const | ||||
| } | ||||
|  | ||||
|  | ||||
| std::string ICMPPacket::errorDescription(Poco::UInt8* buffer, int length) | ||||
| std::string ICMPPacket::errorDescription(Poco::UInt8* buffer, int length, int& type, int& code) | ||||
| { | ||||
| 	return _pImpl->errorDescription(buffer, length); | ||||
| 	return _pImpl->errorDescription(buffer, length, type, code); | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -33,8 +33,9 @@ namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| const UInt16 ICMPPacketImpl::MAX_PACKET_SIZE = 4096; | ||||
| const UInt16 ICMPPacketImpl::MAX_SEQ_VALUE   = 65535; | ||||
| const UInt16 ICMPPacketImpl::MAX_PACKET_SIZE  = 65535; | ||||
| const UInt16 ICMPPacketImpl::MAX_PAYLOAD_SIZE = 65507; | ||||
| const UInt16 ICMPPacketImpl::MAX_SEQ_VALUE    = 65535; | ||||
|  | ||||
|  | ||||
| ICMPPacketImpl::ICMPPacketImpl(int dataSize): | ||||
|   | ||||
| @@ -15,6 +15,7 @@ | ||||
| #include "Poco/Net/ICMPSocket.h" | ||||
| #include "Poco/Net/ICMPSocketImpl.h" | ||||
| #include "Poco/Exception.h" | ||||
| #include "Poco/Net/NetException.h" | ||||
|  | ||||
|  | ||||
| using Poco::InvalidArgumentException; | ||||
| @@ -79,6 +80,12 @@ int ICMPSocket::dataSize() const | ||||
| } | ||||
|  | ||||
|  | ||||
| int ICMPSocket::packetSize() const | ||||
| { | ||||
| 	return static_cast<ICMPSocketImpl*>(impl())->packetSize(); | ||||
| } | ||||
|  | ||||
|  | ||||
| int ICMPSocket::ttl() const | ||||
| { | ||||
| 	return static_cast<ICMPSocketImpl*>(impl())->ttl(); | ||||
| @@ -91,4 +98,50 @@ int ICMPSocket::timeout() const | ||||
| } | ||||
|  | ||||
|  | ||||
| Poco::UInt16 ICMPSocket::mtu(const SocketAddress& address, Poco::UInt16 sz) | ||||
| { | ||||
| 	if (address.family() != IPAddress::IPv4) return 0; | ||||
|  | ||||
| 	SocketAddress returnAddress(address); | ||||
| 	for (; sz >= 68 /*RFC791*/; --sz) | ||||
| 	{ | ||||
| 		ICMPSocket icmpSocket(address.family(), sz); | ||||
|  | ||||
| #ifdef IP_DONTFRAGMENT | ||||
| 		icmpSocket.setOption(IPPROTO_IP, IP_DONTFRAGMENT, 1); | ||||
| #elif defined(IP_MTU_DISCOVER) | ||||
| 		icmpSocket.setOption(IPPROTO_IP, IP_MTU_DISCOVER, IP_PMTUDISC_DO); | ||||
| #elif defined(IP_DONTFRAG) | ||||
| 		icmpSocket.setOption(IPPROTO_IP, IP_DONTFRAG, 1); | ||||
| #else | ||||
| 		throw NotImplementedException("ICMPSocket::mtu()"); | ||||
| #endif | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			icmpSocket.sendTo(address); | ||||
| 			icmpSocket.receiveFrom(returnAddress); | ||||
| 			poco_assert_dbg (returnAddress == address); | ||||
| 			return sz; | ||||
| 		} | ||||
| 		catch (ICMPFragmentationException&) | ||||
| 		{ | ||||
| 			// PMTU fragmentation, continue discovery | ||||
| 			continue; | ||||
| 		} | ||||
| 		catch (NetException& ex) | ||||
| 		{ | ||||
| 			// local MTU limit, continue discovery | ||||
| 			if (ex.code() == POCO_EMSGSIZE) | ||||
| 				continue; | ||||
| 		} | ||||
| 		catch (Exception&) | ||||
| 		{ | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|   | ||||
| @@ -13,10 +13,9 @@ | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/ICMPSocketImpl.h" | ||||
| #include "Poco/Net/ICMPv4PacketImpl.h" | ||||
| #include "Poco/Net/NetException.h" | ||||
| #include "Poco/Timespan.h" | ||||
| #include "Poco/Timestamp.h" | ||||
| #include "Poco/Exception.h" | ||||
| #include "Poco/Format.h" | ||||
| #include "Poco/Buffer.h" | ||||
|  | ||||
|  | ||||
| @@ -36,6 +35,7 @@ ICMPSocketImpl::ICMPSocketImpl(IPAddress::Family family, int dataSize, int ttl, | ||||
| 	_timeout(timeout) | ||||
| { | ||||
| 	setOption(IPPROTO_IP, IP_TTL, ttl); | ||||
| 	setBlocking(true); | ||||
| 	setReceiveTimeout(Timespan(timeout)); | ||||
| } | ||||
|  | ||||
| @@ -52,37 +52,67 @@ int ICMPSocketImpl::sendTo(const void*, int, const SocketAddress& address, int f | ||||
| } | ||||
|  | ||||
|  | ||||
| void ICMPSocketImpl::checkFragmentation(const std::string& err, int type, int code) | ||||
| { | ||||
| 	if (type == ICMPv4PacketImpl::DESTINATION_UNREACHABLE && | ||||
| 		code == ICMPv4PacketImpl::FRAGMENTATION_NEEDED_AND_DF_SET) | ||||
| 	{ | ||||
| 		throw ICMPFragmentationException(err); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| int ICMPSocketImpl::receiveFrom(void*, int, SocketAddress& address, int flags) | ||||
| { | ||||
| 	int maxPacketSize = _icmpPacket.maxPacketSize(); | ||||
| 	Poco::Buffer<unsigned char> buffer(maxPacketSize); | ||||
| 	int expected = _icmpPacket.packetSize(); | ||||
| 	int type = 0, code = 0; | ||||
|  | ||||
| 	try | ||||
| 	{ | ||||
| 		Poco::Timestamp ts; | ||||
| 		int rc; | ||||
| 		do | ||||
| 		{ | ||||
| 			if (ts.isElapsed(_timeout)) | ||||
| 			// guard against a DoS attack | ||||
| 			if (ts.isElapsed(_timeout)) throw TimeoutException(); | ||||
| 			buffer.clear(); | ||||
| 			SocketAddress respAddr; | ||||
| 			rc = SocketImpl::receiveFrom(buffer.begin(), maxPacketSize, respAddr, flags); | ||||
| 			if (rc == 0) break; | ||||
| 			if (respAddr == address) | ||||
| 			{ | ||||
| 				// This guards against a possible DoS attack, where sending | ||||
| 				// fake ping responses will cause an endless loop. | ||||
| 				throw TimeoutException(); | ||||
| 				expected -= rc; | ||||
| 				if (expected <= 0) | ||||
| 				{ | ||||
| 					if (_icmpPacket.validReplyID(buffer.begin(), maxPacketSize)) break; | ||||
| 					std::string err = _icmpPacket.errorDescription(buffer.begin(), maxPacketSize, type, code); | ||||
| 					if (address.family() == IPAddress::IPv4) checkFragmentation(err, type, code); | ||||
| 					if (!err.empty()) throw ICMPException(err); | ||||
| 					throw ICMPException("Invalid ICMP reply"); | ||||
| 				} | ||||
| 			} | ||||
| 			SocketImpl::receiveFrom(buffer.begin(), maxPacketSize, address, flags); | ||||
| 			else continue; | ||||
| 		} | ||||
| 		while (!_icmpPacket.validReplyID(buffer.begin(), maxPacketSize)); | ||||
| 		while (expected > 0 && !_icmpPacket.validReplyID(buffer.begin(), maxPacketSize)); | ||||
| 	} | ||||
| 	catch (TimeoutException&) | ||||
| 	catch (ICMPException&) | ||||
| 	{ | ||||
| 		throw; | ||||
| 	} | ||||
| 	catch (Exception&) | ||||
| 	{ | ||||
| 		std::string err = _icmpPacket.errorDescription(buffer.begin(), maxPacketSize); | ||||
| 		if (!err.empty()) | ||||
| 			throw ICMPException(err); | ||||
| 		else | ||||
| 			throw; | ||||
| 		std::string err = _icmpPacket.errorDescription(buffer.begin(), maxPacketSize, type, code); | ||||
| 		if (address.family() == IPAddress::IPv4) checkFragmentation(err, type, code); | ||||
| 		if (!err.empty()) throw ICMPException(err); | ||||
| 		else throw; | ||||
| 	} | ||||
|  | ||||
| 	if (expected > 0) | ||||
| 	{ | ||||
| 		throw ICMPException(Poco::format("No response: expected %d, received: %d", _icmpPacket.packetSize(), | ||||
| 				_icmpPacket.packetSize() - expected)); | ||||
| 	} | ||||
|  | ||||
| 	struct timeval then = _icmpPacket.time(buffer.begin(), maxPacketSize); | ||||
|   | ||||
| @@ -36,10 +36,10 @@ namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| const UInt8 ICMPv4PacketImpl::DESTINATION_UNREACHABLE_TYPE       = 3; | ||||
| const UInt8 ICMPv4PacketImpl::DESTINATION_UNREACHABLE_TYPE = 3; | ||||
| const Poco::UInt8 ICMPv4PacketImpl::SOURCE_QUENCH_TYPE     = 4; | ||||
| const Poco::UInt8 ICMPv4PacketImpl::REDIRECT_MESSAGE_TYPE  = 5; | ||||
| const UInt8 ICMPv4PacketImpl::TIME_EXCEEDED_TYPE                 = 11; | ||||
| const UInt8 ICMPv4PacketImpl::TIME_EXCEEDED_TYPE           = 11; | ||||
| const Poco::UInt8 ICMPv4PacketImpl::PARAMETER_PROBLEM_TYPE = 12; | ||||
|  | ||||
|  | ||||
| @@ -193,7 +193,7 @@ bool ICMPv4PacketImpl::validReplyID(Poco::UInt8* buffer, int length) const | ||||
| } | ||||
|  | ||||
|  | ||||
| std::string ICMPv4PacketImpl::errorDescription(unsigned char* buffer, int length) | ||||
| std::string ICMPv4PacketImpl::errorDescription(unsigned char* buffer, int length, int& type, int& code) | ||||
| { | ||||
| 	Header *icp = header(buffer, length); | ||||
|  | ||||
| @@ -207,11 +207,12 @@ std::string ICMPv4PacketImpl::errorDescription(unsigned char* buffer, int length | ||||
| 		pointer = icp->id & mask; | ||||
| 	} | ||||
|  | ||||
| 	MessageType type = static_cast<MessageType>(icp->type); | ||||
| 	int code = icp->code; | ||||
| 	type = icp->type; | ||||
| 	MessageType msgType = static_cast<MessageType>(type); | ||||
| 	code = icp->code; | ||||
| 	std::ostringstream err; | ||||
|  | ||||
| 	switch (type) | ||||
| 	switch (msgType) | ||||
| 	{ | ||||
| 	case DESTINATION_UNREACHABLE_TYPE: | ||||
| 		if (code >= NET_UNREACHABLE && code < DESTINATION_UNREACHABLE_UNKNOWN) | ||||
|   | ||||
| @@ -46,7 +46,7 @@ int NTPClient::request(const std::string& address) const | ||||
|  | ||||
| int NTPClient::request(SocketAddress& address) const | ||||
| { | ||||
| 	Poco::Net::SocketAddress sa; | ||||
| 	SocketAddress sa; | ||||
| 	DatagramSocket ntpSocket(_family); | ||||
| 	ntpSocket.setReceiveTimeout(_timeout); | ||||
| 	ntpSocket.bind(sa); | ||||
| @@ -62,22 +62,30 @@ int NTPClient::request(SocketAddress& address) const | ||||
| 	ntpSocket.sendTo(p, 48, address); | ||||
|  | ||||
| 	int received = 0; | ||||
| 	try | ||||
| 	Timestamp start; | ||||
| 	while (true) | ||||
| 	{ | ||||
| 		Poco::Net::SocketAddress sender; | ||||
| 		int n = ntpSocket.receiveFrom(p, sizeof(p)-1, sender); | ||||
| 		try | ||||
| 		{ | ||||
| 			int n = ntpSocket.receiveFrom(p, sizeof(p) - 1, sa); | ||||
| 			if (sa != address) // reply mixup, try until timeout ... | ||||
| 			{ | ||||
| 				if ((Timestamp() - start) < _timeout) continue; | ||||
| 				break; | ||||
| 			} | ||||
| 			if (n < 48) // NTP packet must have at least 48 bytes | ||||
| 				throw Poco::Net::NTPException("Invalid response received"); | ||||
|  | ||||
| 		if (n < 48) // NTP packet must have at least 48 bytes | ||||
| 			throw Poco::Net::NTPException("Invalid response received"); | ||||
|  | ||||
| 		packet.setPacket(p); | ||||
| 		eventArgs.setPacket(packet); | ||||
| 		++received; | ||||
| 		response.notify(this, eventArgs); | ||||
| 	} | ||||
| 	catch (Poco::TimeoutException &) | ||||
| 	{ | ||||
| 		// ignore | ||||
| 			packet.setPacket(p); | ||||
| 			eventArgs.setPacket(packet); | ||||
| 			++received; | ||||
| 			response.notify(this, eventArgs); | ||||
| 			break; | ||||
| 		} | ||||
| 		catch (Poco::TimeoutException &) | ||||
| 		{ | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return received; | ||||
|   | ||||
| @@ -44,6 +44,7 @@ POCO_IMPLEMENT_EXCEPTION(FTPException, NetException, "FTP Exception") | ||||
| POCO_IMPLEMENT_EXCEPTION(SMTPException, NetException, "SMTP Exception") | ||||
| POCO_IMPLEMENT_EXCEPTION(POP3Exception, NetException, "POP3 Exception") | ||||
| POCO_IMPLEMENT_EXCEPTION(ICMPException, NetException, "ICMP Exception") | ||||
| POCO_IMPLEMENT_EXCEPTION(ICMPFragmentationException, NetException, "ICMP Fragmentation needed") | ||||
| POCO_IMPLEMENT_EXCEPTION(NTPException, NetException, "NTP Exception") | ||||
| POCO_IMPLEMENT_EXCEPTION(HTMLFormException, NetException, "HTML Form Exception") | ||||
| POCO_IMPLEMENT_EXCEPTION(WebSocketException, NetException, "WebSocket Exception") | ||||
|   | ||||
| @@ -159,7 +159,10 @@ public: | ||||
| 	{ | ||||
| 		PollSet::SocketModeMap result; | ||||
|  | ||||
| 		if (_socketMap.empty()) return result; | ||||
| 		{ | ||||
| 			Poco::FastMutex::ScopedLock lock(_mutex); | ||||
| 			if(_socketMap.empty()) return result; | ||||
| 		} | ||||
|  | ||||
| 		Poco::Timespan remainingTime(timeout); | ||||
| 		int rc; | ||||
| @@ -322,7 +325,7 @@ public: | ||||
| 		{ | ||||
| 			Poco::Timestamp start; | ||||
| #ifdef _WIN32 | ||||
| 			rc = WSAPoll(&_pollfds[0], _pollfds.size(), static_cast<INT>(timeout.totalMilliseconds())); | ||||
| 			rc = WSAPoll(&_pollfds[0], static_cast<ULONG>(_pollfds.size()), static_cast<INT>(timeout.totalMilliseconds())); | ||||
| #else | ||||
| 			rc = ::poll(&_pollfds[0], _pollfds.size(), timeout.totalMilliseconds()); | ||||
| #endif | ||||
|   | ||||
| @@ -389,4 +389,79 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce | ||||
| } | ||||
|  | ||||
|  | ||||
| SocketBufVec Socket::makeBufVec(std::size_t size, std::size_t bufLen) | ||||
| { | ||||
| 	SocketBufVec buf(size); | ||||
| 	SocketBufVec::iterator it = buf.begin(); | ||||
| 	SocketBufVec::iterator end = buf.end(); | ||||
| 	for (; it != end; ++it) | ||||
| 	{ | ||||
| 		// TODO: use memory pool | ||||
| 		*it = makeBuffer(malloc(bufLen), bufLen); | ||||
| 	} | ||||
| 	return buf; | ||||
| } | ||||
|  | ||||
|  | ||||
| void Socket::destroyBufVec(SocketBufVec& buf) | ||||
| { | ||||
| 	SocketBufVec::iterator it = buf.begin(); | ||||
| 	SocketBufVec::iterator end = buf.end(); | ||||
| 	for (; it != end; ++it) | ||||
| 	{ | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 		free(it->buf); | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) | ||||
| 		free(it->iov_base); | ||||
| #endif | ||||
| 	} | ||||
| 	SocketBufVec().swap(buf); | ||||
| } | ||||
|  | ||||
|  | ||||
| SocketBuf Socket::makeBuffer(void* buffer, std::size_t length) | ||||
| { | ||||
| 	SocketBuf ret; | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 	ret.buf = reinterpret_cast<char*>(buffer); | ||||
| 	ret.len = static_cast<ULONG>(length); | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) | ||||
| 	ret.iov_base = buffer; | ||||
| 	ret.iov_len = length; | ||||
| #else | ||||
| 	throw NotImplementedException("Socket::makeBuffer(void*, size_t)"); | ||||
| #endif | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
|  | ||||
| SocketBufVec Socket::makeBufVec(const std::vector<char*>& vec) | ||||
| { | ||||
| 	SocketBufVec buf(vec.size()); | ||||
| 	SocketBufVec::iterator it = buf.begin(); | ||||
| 	SocketBufVec::iterator end = buf.end(); | ||||
| 	std::vector<char*>::const_iterator vIt = vec.begin(); | ||||
| 	for (; it != end; ++it, ++vIt) | ||||
| 	{ | ||||
| 		*it = makeBuffer(*vIt, strlen(*vIt)); | ||||
| 	} | ||||
| 	return buf; | ||||
| } | ||||
|  | ||||
|  | ||||
| SocketBufVec Socket::makeBufVec(const std::vector<std::string>& vec) | ||||
| { | ||||
| 	SocketBufVec buf(vec.size()); | ||||
| 	SocketBufVec::iterator it = buf.begin(); | ||||
| 	SocketBufVec::iterator end = buf.end(); | ||||
| 	std::vector<std::string>::const_iterator vIt = vec.begin(); | ||||
| 	for (; it != end; ++it, ++vIt) | ||||
| 	{ | ||||
| 		char* c = const_cast<char*>(vIt->data()); | ||||
| 		*it = makeBuffer(reinterpret_cast<void*>(c), vIt->size()); | ||||
| 	} | ||||
| 	return buf; | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
|   | ||||
| @@ -18,11 +18,26 @@ | ||||
| #include "Poco/NumberFormatter.h" | ||||
| #include "Poco/Timestamp.h" | ||||
| #include <string.h> // FD_SET needs memset on some platforms, so we can't use <cstring> | ||||
|  | ||||
|  | ||||
| #if defined(_WIN32) && _WIN32_WINNT >= 0x0600 | ||||
| #ifndef POCO_HAVE_FD_POLL | ||||
| #define POCO_HAVE_FD_POLL 1 | ||||
| #endif | ||||
| #elif defined(POCO_OS_FAMILY_BSD) | ||||
| #ifndef POCO_HAVE_FD_POLL | ||||
| #define POCO_HAVE_FD_POLL 1 | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined(POCO_HAVE_FD_EPOLL) | ||||
| #include <sys/epoll.h> | ||||
| #elif defined(POCO_HAVE_FD_POLL) | ||||
| #ifndef _WIN32 | ||||
| #include <poll.h> | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined(sun) || defined(__sun) || defined(__sun__) | ||||
| @@ -56,7 +71,7 @@ bool checkIsBrokenTimeout() | ||||
| 	// https://social.msdn.microsoft.com/Forums/en-US/76620f6d-22b1-4872-aaf0-833204f3f867/minimum-timeout-value-for-sorcvtimeo | ||||
| 	OSVERSIONINFO vi; | ||||
| 	vi.dwOSVersionInfoSize = sizeof(vi); | ||||
| 	if (GetVersionEx(&vi) == 0) return true; //throw SystemException("Cannot get OS version information"); | ||||
| 	if (GetVersionEx(&vi) == 0) return true; | ||||
| 	return vi.dwMajorVersion < 6 || (vi.dwMajorVersion == 6 && vi.dwMinorVersion < 2); | ||||
| #endif | ||||
| 	return false; | ||||
| @@ -189,7 +204,7 @@ void SocketImpl::connectNB(const SocketAddress& address) | ||||
|  | ||||
| void SocketImpl::bind(const SocketAddress& address, bool reuseAddress) | ||||
| { | ||||
|     bind(address, reuseAddress, true); | ||||
| 	bind(address, reuseAddress, true); | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -201,7 +216,7 @@ void SocketImpl::bind(const SocketAddress& address, bool reuseAddress, bool reus | ||||
| 	} | ||||
| 	if (reuseAddress) | ||||
| 		setReuseAddress(true); | ||||
|     if (reusePort) | ||||
| 	if (reusePort) | ||||
| 		setReusePort(true); | ||||
| #if defined(POCO_VXWORKS) | ||||
| 	int rc = ::bind(_sockfd, (sockaddr*) address.addr(), address.length()); | ||||
| @@ -214,7 +229,7 @@ void SocketImpl::bind(const SocketAddress& address, bool reuseAddress, bool reus | ||||
|  | ||||
| void SocketImpl::bind6(const SocketAddress& address, bool reuseAddress, bool ipV6Only) | ||||
| { | ||||
|     bind6(address, reuseAddress, true, ipV6Only); | ||||
| 	bind6(address, reuseAddress, true, ipV6Only); | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -235,7 +250,7 @@ void SocketImpl::bind6(const SocketAddress& address, bool reuseAddress, bool reu | ||||
| #endif | ||||
| 	if (reuseAddress) | ||||
| 		setReuseAddress(true); | ||||
|     if (reusePort) | ||||
| 	if (reusePort) | ||||
| 		setReusePort(true); | ||||
| 	int rc = ::bind(_sockfd, address.addr(), address.length()); | ||||
| 	if (rc != 0) error(address.toString()); | ||||
| @@ -291,16 +306,22 @@ void SocketImpl::shutdown() | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::sendBytes(const void* buffer, int length, int flags) | ||||
| void SocketImpl::checkBrokenTimeout() | ||||
| { | ||||
| 	if (_isBrokenTimeout) | ||||
| 	{ | ||||
| 		if (_sndTimeout.totalMicroseconds() != 0) | ||||
| 		if (_recvTimeout.totalMicroseconds() != 0) | ||||
| 		{ | ||||
| 			if (!poll(_sndTimeout, SELECT_WRITE)) | ||||
| 			if (!poll(_recvTimeout, SELECT_READ)) | ||||
| 				throw TimeoutException(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::sendBytes(const void* buffer, int length, int flags) | ||||
| { | ||||
| 	checkBrokenTimeout(); | ||||
|  | ||||
| 	int rc; | ||||
| 	do | ||||
| @@ -314,16 +335,34 @@ int SocketImpl::sendBytes(const void* buffer, int length, int flags) | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::sendBytes(const SocketBufVec& buffers, int flags) | ||||
| { | ||||
| 	checkBrokenTimeout(); | ||||
|  | ||||
| 	int rc = 0; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 		DWORD sent = 0; | ||||
| 		rc = WSASend(_sockfd, const_cast<LPWSABUF>(&buffers[0]), | ||||
| 					static_cast<DWORD>(buffers.size()), &sent, | ||||
| 					static_cast<DWORD>(flags), 0, 0); | ||||
| 		if (rc == SOCKET_ERROR) error(); | ||||
| 		rc = sent; | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) | ||||
| 		rc = writev(_sockfd, &buffers[0], static_cast<int>(buffers.size())); | ||||
| #endif | ||||
| 	} | ||||
| 	while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 	if (rc < 0) error(); | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveBytes(void* buffer, int length, int flags) | ||||
| { | ||||
| 	if (_isBrokenTimeout) | ||||
| 	{ | ||||
| 		if (_recvTimeout.totalMicroseconds() != 0) | ||||
| 		{ | ||||
| 			if (!poll(_recvTimeout, SELECT_READ)) | ||||
| 				throw TimeoutException(); | ||||
| 		} | ||||
| 	} | ||||
| 	checkBrokenTimeout(); | ||||
|  | ||||
| 	int rc; | ||||
| 	do | ||||
| @@ -346,12 +385,76 @@ int SocketImpl::receiveBytes(void* buffer, int length, int flags) | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveBytes(SocketBufVec& buffers, int flags) | ||||
| { | ||||
| 	checkBrokenTimeout(); | ||||
|  | ||||
| 	int rc = 0; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 		DWORD recvd = 0; | ||||
| 		DWORD dwFlags = static_cast<DWORD>(flags); | ||||
| 		rc = WSARecv(_sockfd, &buffers[0], static_cast<DWORD>(buffers.size()), | ||||
| 					&recvd, &dwFlags, 0, 0); | ||||
| 		if (rc == SOCKET_ERROR) error(); | ||||
| 		rc = recvd; | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) | ||||
| 		rc = readv(_sockfd, &buffers[0], static_cast<int>(buffers.size())); | ||||
| #endif | ||||
| 	} | ||||
| 	while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 	if (rc < 0) | ||||
| 	{ | ||||
| 		int err = lastError(); | ||||
| 		if (err == POCO_EAGAIN && !_blocking) | ||||
| 			; | ||||
| 		else if (err == POCO_EAGAIN || err == POCO_ETIMEDOUT) | ||||
| 			throw TimeoutException(err); | ||||
| 		else | ||||
| 			error(err); | ||||
| 	} | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveBytes(Poco::Buffer<char>& buffer, int flags, const Poco::Timespan& timeout) | ||||
| { | ||||
| 	int rc = 0; | ||||
| 	if (poll(timeout, SELECT_READ)) | ||||
| 	{ | ||||
| 		int avail = available(); | ||||
| 		if (buffer.size() < avail) buffer.resize(avail); | ||||
|  | ||||
| 		do | ||||
| 		{ | ||||
| 			if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| 			rc = ::recv(_sockfd, buffer.begin(), static_cast<int>(buffer.size()), flags); | ||||
| 		} | ||||
| 		while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 		if (rc < 0) | ||||
| 		{ | ||||
| 			int err = lastError(); | ||||
| 			if (err == POCO_EAGAIN && !_blocking) | ||||
| 				; | ||||
| 			else if (err == POCO_EAGAIN || err == POCO_ETIMEDOUT) | ||||
| 				throw TimeoutException(err); | ||||
| 			else | ||||
| 				error(err); | ||||
| 		} | ||||
| 		if (rc < buffer.size()) buffer.resize(rc); | ||||
| 	} | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::sendTo(const void* buffer, int length, const SocketAddress& address, int flags) | ||||
| { | ||||
| 	int rc; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) init(address.af()); | ||||
| #if defined(POCO_VXWORKS) | ||||
| 		rc = ::sendto(_sockfd, (char*) buffer, length, flags, (sockaddr*) address.addr(), address.length()); | ||||
| #else | ||||
| @@ -364,32 +467,121 @@ int SocketImpl::sendTo(const void* buffer, int length, const SocketAddress& addr | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::sendTo(const SocketBufVec& buffers, const SocketAddress& address, int flags) | ||||
| { | ||||
| 	int rc = 0; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) init(address.af()); | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 		DWORD sent = 0; | ||||
| 		rc = WSASendTo(_sockfd, const_cast<LPWSABUF>(&buffers[0]), | ||||
| 						static_cast<DWORD>(buffers.size()), &sent, | ||||
| 						static_cast<DWORD>(flags), | ||||
| 						address.addr(), address.length(), 0, 0); | ||||
| 		if (rc == SOCKET_ERROR) error(); | ||||
| 		rc = sent; | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) | ||||
| 		struct msghdr msgHdr; | ||||
| 		msgHdr.msg_name = const_cast<sockaddr*>(address.addr()); | ||||
| 		msgHdr.msg_namelen = address.length(); | ||||
| 		msgHdr.msg_iov = const_cast<iovec*>(&buffers[0]); | ||||
| 		msgHdr.msg_iovlen = buffers.size(); | ||||
| 		msgHdr.msg_control = 0; | ||||
| 		msgHdr.msg_controllen = 0; | ||||
| 		msgHdr.msg_flags = flags; | ||||
| 		rc = sendmsg(_sockfd, &msgHdr, flags); | ||||
| #endif | ||||
| 	} | ||||
| 	while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 	if (rc < 0) error(); | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveFrom(void* buffer, int length, SocketAddress& address, int flags) | ||||
| { | ||||
| 	if (_isBrokenTimeout) | ||||
| 	{ | ||||
| 		if (_recvTimeout.totalMicroseconds() != 0) | ||||
| 		{ | ||||
| 			if (!poll(_recvTimeout, SELECT_READ)) | ||||
| 				throw TimeoutException(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	char abuffer[SocketAddress::MAX_ADDRESS_LENGTH]; | ||||
| 	struct sockaddr* pSA = reinterpret_cast<struct sockaddr*>(abuffer); | ||||
| 	poco_socklen_t saLen = sizeof(abuffer); | ||||
| 	int rc; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| 		rc = ::recvfrom(_sockfd, reinterpret_cast<char*>(buffer), length, flags, pSA, &saLen); | ||||
| 	} | ||||
| 	while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 	poco_socklen_t* pSALen = &saLen; | ||||
| 	int rc = receiveFrom(buffer, length, &pSA, &pSALen, flags); | ||||
| 	if (rc >= 0) | ||||
| 	{ | ||||
| 		address = SocketAddress(pSA, saLen); | ||||
| 	} | ||||
| 	else | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveFrom(void* buffer, int length, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags) | ||||
| { | ||||
| 	checkBrokenTimeout(); | ||||
| 	int rc; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| 		rc = ::recvfrom(_sockfd, reinterpret_cast<char*>(buffer), length, flags, *ppSA, *ppSALen); | ||||
| 	} | ||||
| 	while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 	if (rc < 0) | ||||
| 	{ | ||||
| 		int err = lastError(); | ||||
| 		if (err == POCO_EAGAIN && !_blocking) | ||||
| 			; | ||||
| 		else if (err == POCO_EAGAIN || err == POCO_ETIMEDOUT) | ||||
| 			throw TimeoutException(err); | ||||
| 		else | ||||
| 			error(err); | ||||
| 	} | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveFrom(SocketBufVec& buffers, SocketAddress& address, int flags) | ||||
| { | ||||
| 	char abuffer[SocketAddress::MAX_ADDRESS_LENGTH]; | ||||
| 	struct sockaddr* pSA = reinterpret_cast<struct sockaddr*>(abuffer); | ||||
| 	poco_socklen_t saLen = sizeof(abuffer); | ||||
| 	poco_socklen_t* pSALen = &saLen; | ||||
| 	int rc = receiveFrom(buffers, &pSA, &pSALen, flags); | ||||
| 	if(rc >= 0) | ||||
| 	{ | ||||
| 		address = SocketAddress(pSA, saLen); | ||||
| 	} | ||||
| 	return rc; | ||||
| } | ||||
|  | ||||
|  | ||||
| int SocketImpl::receiveFrom(SocketBufVec& buffers, struct sockaddr** pSA, poco_socklen_t** ppSALen, int flags) | ||||
| { | ||||
| 	checkBrokenTimeout(); | ||||
| 	int rc = 0; | ||||
| 	do | ||||
| 	{ | ||||
| 		if (_sockfd == POCO_INVALID_SOCKET) throw InvalidSocketException(); | ||||
| #if defined(POCO_OS_FAMILY_WINDOWS) | ||||
| 		DWORD recvd = 0; | ||||
| 		DWORD dwFlags = static_cast<DWORD>(flags); | ||||
| 		rc = WSARecvFrom(_sockfd, &buffers[0], static_cast<DWORD>(buffers.size()), | ||||
| 						&recvd, &dwFlags, *pSA, *ppSALen, 0, 0); | ||||
| 		if (rc == SOCKET_ERROR) error(); | ||||
| 		rc = recvd; | ||||
| #elif defined(POCO_OS_FAMILY_UNIX) | ||||
| 		struct msghdr msgHdr; | ||||
| 		msgHdr.msg_name = *pSA; | ||||
| 		msgHdr.msg_namelen = **ppSALen; | ||||
| 		msgHdr.msg_iov = &buffers[0]; | ||||
| 		msgHdr.msg_iovlen = buffers.size(); | ||||
| 		msgHdr.msg_control = 0; | ||||
| 		msgHdr.msg_controllen = 0; | ||||
| 		msgHdr.msg_flags = flags; | ||||
| 		rc = recvmsg(_sockfd, &msgHdr, flags); | ||||
| 		if (rc >= 0) **ppSALen = msgHdr.msg_namelen; | ||||
| #endif | ||||
| 	} | ||||
| 	while (_blocking && rc < 0 && lastError() == POCO_EINTR); | ||||
| 	if (rc < 0) | ||||
| 	{ | ||||
| 		int err = lastError(); | ||||
| 		if (err == POCO_EAGAIN && !_blocking) | ||||
| @@ -414,7 +606,7 @@ void SocketImpl::sendUrgent(unsigned char data) | ||||
|  | ||||
| int SocketImpl::available() | ||||
| { | ||||
| 	int result; | ||||
| 	int result = 0; | ||||
| 	ioctl(FIONREAD, result); | ||||
| 	return result; | ||||
| } | ||||
| @@ -494,8 +686,11 @@ bool SocketImpl::poll(const Poco::Timespan& timeout, int mode) | ||||
| 	do | ||||
| 	{ | ||||
| 		Poco::Timestamp start; | ||||
| #ifdef _WIN32 | ||||
| 		rc = WSAPoll(&pollBuf, 1, static_cast<INT>(timeout.totalMilliseconds())); | ||||
| #else | ||||
| 		rc = ::poll(&pollBuf, 1, remainingTime.totalMilliseconds()); | ||||
|  | ||||
| #endif | ||||
| 		if (rc < 0 && lastError() == POCO_EINTR) | ||||
| 		{ | ||||
| 			Poco::Timestamp end; | ||||
| @@ -939,7 +1134,7 @@ void SocketImpl::initSocket(int af, int type, int proto) | ||||
| 	// will crash the process. This only happens on UNIX, and not Linux. | ||||
| 	// | ||||
| 	// In order to have POCO sockets behave the same across platforms, it is | ||||
| 	// best to just ignore SIGPIPE all together. | ||||
| 	// best to just ignore SIGPIPE altogether. | ||||
| 	setOption(SOL_SOCKET, SO_NOSIGPIPE, 1); | ||||
| #endif | ||||
| } | ||||
|   | ||||
| @@ -35,6 +35,7 @@ SocketNotifier::~SocketNotifier() | ||||
| void SocketNotifier::addObserver(SocketReactor* pReactor, const Poco::AbstractObserver& observer) | ||||
| { | ||||
| 	_nc.addObserver(observer); | ||||
| 	ScopedLock l(_mutex); | ||||
| 	if (observer.accepts(pReactor->_pReadableNotification)) | ||||
| 		_events.insert(pReactor->_pReadableNotification.get()); | ||||
| 	else if (observer.accepts(pReactor->_pWritableNotification)) | ||||
| @@ -49,6 +50,7 @@ void SocketNotifier::addObserver(SocketReactor* pReactor, const Poco::AbstractOb | ||||
| void SocketNotifier::removeObserver(SocketReactor* pReactor, const Poco::AbstractObserver& observer) | ||||
| { | ||||
| 	_nc.removeObserver(observer); | ||||
| 	ScopedLock l(_mutex); | ||||
| 	EventSet::iterator it = _events.end(); | ||||
| 	if (observer.accepts(pReactor->_pReadableNotification)) | ||||
| 		it = _events.find(pReactor->_pReadableNotification.get()); | ||||
|   | ||||
| @@ -115,10 +115,9 @@ void SocketReactor::run() | ||||
|  | ||||
| bool SocketReactor::hasSocketHandlers() | ||||
| { | ||||
| 	ScopedLock lock(_mutex); | ||||
|  | ||||
| 	if (!_pollSet.empty()) | ||||
| 	{ | ||||
| 		ScopedLock lock(_mutex); | ||||
| 		for (EventHandlerMap::iterator it = _handlers.begin(); it != _handlers.end(); ++it) | ||||
| 		{ | ||||
| 			if (it->second->accepts(_pReadableNotification) || | ||||
| @@ -157,21 +156,9 @@ const Poco::Timespan& SocketReactor::getTimeout() const | ||||
|  | ||||
| void SocketReactor::addEventHandler(const Socket& socket, const Poco::AbstractObserver& observer) | ||||
| { | ||||
| 	NotifierPtr pNotifier; | ||||
| 	{ | ||||
| 		ScopedLock lock(_mutex); | ||||
| 	NotifierPtr pNotifier = getNotifier(socket, true); | ||||
|  | ||||
| 		EventHandlerMap::iterator it = _handlers.find(socket); | ||||
| 		if (it == _handlers.end()) | ||||
| 		{ | ||||
| 			pNotifier = new SocketNotifier(socket); | ||||
| 			_handlers[socket] = pNotifier; | ||||
| 		} | ||||
| 		else pNotifier = it->second; | ||||
|  | ||||
| 		if (!pNotifier->hasObserver(observer)) | ||||
| 			pNotifier->addObserver(this, observer); | ||||
| 	} | ||||
| 	if (!pNotifier->hasObserver(observer)) pNotifier->addObserver(this, observer); | ||||
|  | ||||
| 	int mode = 0; | ||||
| 	if (pNotifier->accepts(_pReadableNotification)) mode |= PollSet::POLL_READ; | ||||
| @@ -183,44 +170,40 @@ void SocketReactor::addEventHandler(const Socket& socket, const Poco::AbstractOb | ||||
|  | ||||
| bool SocketReactor::hasEventHandler(const Socket& socket, const Poco::AbstractObserver& observer) | ||||
| { | ||||
| 	NotifierPtr pNotifier; | ||||
| 	{ | ||||
| 		ScopedLock lock(_mutex); | ||||
| 	 | ||||
| 		EventHandlerMap::iterator it = _handlers.find(socket); | ||||
| 		if (it != _handlers.end()) | ||||
| 		{ | ||||
| 			if (it->second->hasObserver(observer)) | ||||
| 				return true; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	NotifierPtr pNotifier = getNotifier(socket); | ||||
| 	if (!pNotifier) return false; | ||||
| 	if (pNotifier->hasObserver(observer)) return true; | ||||
| 	return false; | ||||
| } | ||||
|  | ||||
|  | ||||
| SocketReactor::NotifierPtr SocketReactor::getNotifier(const Socket& socket, bool makeNew) | ||||
| { | ||||
| 	ScopedLock lock(_mutex); | ||||
|  | ||||
| 	EventHandlerMap::iterator it = _handlers.find(socket); | ||||
| 	if (it != _handlers.end()) return it->second; | ||||
| 	else if (makeNew) return (_handlers[socket] = new SocketNotifier(socket)); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
|  | ||||
| void SocketReactor::removeEventHandler(const Socket& socket, const Poco::AbstractObserver& observer) | ||||
| { | ||||
| 	NotifierPtr pNotifier; | ||||
| 	{ | ||||
| 		ScopedLock lock(_mutex); | ||||
| 	 | ||||
| 		EventHandlerMap::iterator it = _handlers.find(socket); | ||||
| 		if (it != _handlers.end()) | ||||
| 		{ | ||||
| 			pNotifier = it->second; | ||||
| 			if (pNotifier->hasObserver(observer) && pNotifier->countObservers() == 1) | ||||
| 			{ | ||||
| 				_handlers.erase(it); | ||||
| 				_pollSet.remove(socket); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	NotifierPtr pNotifier = getNotifier(socket); | ||||
| 	if (pNotifier && pNotifier->hasObserver(observer)) | ||||
| 	{ | ||||
| 		if(pNotifier->countObservers() == 1) | ||||
| 		{ | ||||
| 			{ | ||||
| 				ScopedLock lock(_mutex); | ||||
| 				_handlers.erase(socket); | ||||
| 			} | ||||
| 			_pollSet.remove(socket); | ||||
| 		} | ||||
| 		pNotifier->removeObserver(this, observer); | ||||
| 	} | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -255,15 +238,8 @@ void SocketReactor::onBusy() | ||||
|  | ||||
| void SocketReactor::dispatch(const Socket& socket, SocketNotification* pNotification) | ||||
| { | ||||
| 	NotifierPtr pNotifier; | ||||
| 	{ | ||||
| 		ScopedLock lock(_mutex); | ||||
| 		EventHandlerMap::iterator it = _handlers.find(socket); | ||||
| 		if (it != _handlers.end()) | ||||
| 			pNotifier = it->second; | ||||
| 		else | ||||
| 			return; | ||||
| 	} | ||||
| 	NotifierPtr pNotifier = getNotifier(socket); | ||||
| 	if (!pNotifier) return; | ||||
| 	dispatch(pNotifier, pNotification); | ||||
| } | ||||
|  | ||||
| @@ -271,9 +247,9 @@ void SocketReactor::dispatch(const Socket& socket, SocketNotification* pNotifica | ||||
| void SocketReactor::dispatch(SocketNotification* pNotification) | ||||
| { | ||||
| 	std::vector<NotifierPtr> delegates; | ||||
| 	delegates.reserve(_handlers.size()); | ||||
| 	{ | ||||
| 		ScopedLock lock(_mutex); | ||||
| 		delegates.reserve(_handlers.size()); | ||||
| 		for (EventHandlerMap::iterator it = _handlers.begin(); it != _handlers.end(); ++it) | ||||
| 			delegates.push_back(it->second); | ||||
| 	} | ||||
|   | ||||
| @@ -115,6 +115,12 @@ int StreamSocket::sendBytes(const void* buffer, int length, int flags) | ||||
| } | ||||
|  | ||||
|  | ||||
| int StreamSocket::sendBytes(const SocketBufVec& buffers, int flags) | ||||
| { | ||||
| 	return impl()->sendBytes(buffers, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int StreamSocket::sendBytes(FIFOBuffer& fifoBuf) | ||||
| { | ||||
| 	ScopedLock<Mutex> l(fifoBuf.mutex()); | ||||
| @@ -131,6 +137,18 @@ int StreamSocket::receiveBytes(void* buffer, int length, int flags) | ||||
| } | ||||
|  | ||||
|  | ||||
| int StreamSocket::receiveBytes(SocketBufVec& buffers, int flags) | ||||
| { | ||||
| 	return impl()->receiveBytes(buffers, flags); | ||||
| } | ||||
|  | ||||
|  | ||||
| int StreamSocket::receiveBytes(Poco::Buffer<char>& buffer, int flags, const Poco::Timespan& timeout) | ||||
| { | ||||
| 	return impl()->receiveBytes(buffer, flags, timeout); | ||||
| } | ||||
|  | ||||
|  | ||||
| int StreamSocket::receiveBytes(FIFOBuffer& fifoBuf) | ||||
| { | ||||
| 	ScopedLock<Mutex> l(fifoBuf.mutex()); | ||||
|   | ||||
							
								
								
									
										91
									
								
								Net/src/UDPClient.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								Net/src/UDPClient.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| // | ||||
| // UDPClient.cpp | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPClient | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/UDPClient.h" | ||||
| #include "Poco/ErrorHandler.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| UDPClient::UDPClient(const std::string& address, Poco::UInt16 port, bool listen): | ||||
| 	_address(address, port), | ||||
| 	_pThread(0), | ||||
| 	_stop(false) | ||||
| { | ||||
| 	_socket.bind(SocketAddress(address, 0), true, true); | ||||
| 	_socket.setReuseAddress(true); | ||||
| 	_socket.setReusePort(true); | ||||
| 	_socket.connect(_address); | ||||
| 	_socket.setBlocking(true); | ||||
| 	if (listen) | ||||
| 	{ | ||||
| 		_pThread = new Thread; | ||||
| 		_pThread->start(*this); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| UDPClient::~UDPClient() | ||||
| { | ||||
| 	_stop = true; | ||||
| 	if (_pThread) | ||||
| 	{ | ||||
| 		_pThread->join(); | ||||
| 		delete _pThread; | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| void UDPClient::run() | ||||
| { | ||||
| 	Poco::Timespan span(250000); | ||||
| 	while (!_stop) | ||||
| 	{ | ||||
| 		if (_socket.poll(span, Socket::SELECT_READ)) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				char buffer[sizeof(Poco::UInt32)*2]; | ||||
| 				int n = _socket.receiveBytes(buffer, sizeof(buffer)); | ||||
| 				if (n >= sizeof(Poco::Int32)) handleResponse(buffer, n); | ||||
| 			} | ||||
| 			catch (Exception& exc) | ||||
| 			{ | ||||
| 				ErrorHandler::handle(exc); | ||||
| 			} | ||||
| 			catch (std::exception& exc) | ||||
| 			{ | ||||
| 				ErrorHandler::handle(exc); | ||||
| 			} | ||||
| 			catch (...) | ||||
| 			{ | ||||
| 				ErrorHandler::handle(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
|  | ||||
| int UDPClient::handleResponse(char* buffer, int length) | ||||
| { | ||||
| 	Poco::Int32 count = *reinterpret_cast<Poco::Int32*>(buffer); | ||||
| 	if (count > 0) _dataBacklog = count; | ||||
| 	else if (count < 0) _errorBacklog = count; | ||||
| 	return count; | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
							
								
								
									
										42
									
								
								Net/src/UDPServerParams.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								Net/src/UDPServerParams.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| // | ||||
| // UDPServerParams.cpp | ||||
| // | ||||
| // Library: Net | ||||
| // Package: UDP | ||||
| // Module:  UDPServerParams | ||||
| // | ||||
| // Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. | ||||
| // and Contributors. | ||||
| // | ||||
| // SPDX-License-Identifier:	BSL-1.0 | ||||
| // | ||||
|  | ||||
|  | ||||
| #include "Poco/Net/UDPServerParams.h" | ||||
|  | ||||
|  | ||||
| namespace Poco { | ||||
| namespace Net { | ||||
|  | ||||
|  | ||||
| UDPServerParams::UDPServerParams(const Poco::Net::SocketAddress& sa, | ||||
| 	int nSockets, | ||||
| 	Poco::Timespan timeout, | ||||
| 	std::size_t handlerBufListSize, | ||||
| 	bool notifySender, | ||||
| 	int  backlogThreshold): _sa(sa), | ||||
| 		_nSockets(nSockets), | ||||
| 		_timeout(timeout), | ||||
| 		_handlerBufListSize(handlerBufListSize), | ||||
| 		_notifySender(notifySender), | ||||
| 		_backlogThreshold(backlogThreshold) | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| UDPServerParams::~UDPServerParams() | ||||
| { | ||||
| } | ||||
|  | ||||
|  | ||||
| } } // namespace Poco::Net | ||||
| @@ -198,14 +198,14 @@ int WebSocketImpl::receiveBytes(void* buffer, int length, int) | ||||
| } | ||||
|  | ||||
|  | ||||
| int WebSocketImpl::receiveBytes(Poco::Buffer<char>& buffer, int) | ||||
| int WebSocketImpl::receiveBytes(Poco::Buffer<char>& buffer, int, const Poco::Timespan&) | ||||
| { | ||||
| 	char mask[4]; | ||||
| 	bool useMask; | ||||
| 	int payloadLength = receiveHeader(mask, useMask); | ||||
| 	if (payloadLength <= 0) | ||||
| 		return payloadLength; | ||||
| 	int oldSize = buffer.size(); | ||||
| 	int oldSize = static_cast<int>(buffer.size()); | ||||
| 	buffer.resize(oldSize + payloadLength); | ||||
| 	return receivePayload(buffer.begin() + oldSize, payloadLength, mask, useMask); | ||||
| } | ||||
| @@ -231,7 +231,7 @@ int WebSocketImpl::receiveNBytes(void* buffer, int bytes) | ||||
|  | ||||
| int WebSocketImpl::receiveSomeBytes(char* buffer, int bytes) | ||||
| { | ||||
| 	int n = _buffer.size() - _bufferOffset; | ||||
| 	int n = static_cast<int>(_buffer.size()) - _bufferOffset; | ||||
| 	if (n > 0) | ||||
| 	{ | ||||
| 		if (bytes < n) n = bytes; | ||||
| @@ -375,7 +375,7 @@ Poco::Timespan WebSocketImpl::getReceiveTimeout() | ||||
|  | ||||
| int WebSocketImpl::available() | ||||
| { | ||||
| 	int n = _buffer.size() - _bufferOffset; | ||||
| 	int n = static_cast<int>(_buffer.size()) - _bufferOffset; | ||||
| 	if (n > 0) | ||||
| 		return n + _pStreamSocketImpl->available(); | ||||
| 	else | ||||
|   | ||||
| @@ -27,7 +27,7 @@ objects = \ | ||||
| 	WebSocketTest WebSocketTestSuite \ | ||||
| 	SyslogTest \ | ||||
| 	OAuth10CredentialsTest OAuth20CredentialsTest OAuthTestSuite \ | ||||
| 	PollSetTest | ||||
| 	PollSetTest UDPServerTest UDPServerTestSuite | ||||
|  | ||||
| target         = testrunner | ||||
| target_version = 1 | ||||
|   | ||||
| @@ -867,6 +867,23 @@ | ||||
| 					RelativePath=".\src\OAuthTestSuite.cpp"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="UDP"> | ||||
| 			<Filter | ||||
| 				Name="Source Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTest.cpp"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTestSuite.cpp"/> | ||||
| 			</Filter> | ||||
| 			<Filter | ||||
| 				Name="Header Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTest.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTestSuite.h"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 	</Files> | ||||
| 	<Globals/> | ||||
| </VisualStudioProject> | ||||
|   | ||||
| @@ -62,6 +62,8 @@ | ||||
|     <ClInclude Include="src\OAuth10CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuth20CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectName>TestSuite</ProjectName> | ||||
| @@ -149,6 +151,8 @@ | ||||
|     <ClCompile Include="src\OAuth10CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> | ||||
|   <ImportGroup Label="ExtensionTargets"/> | ||||
|   | ||||
| @@ -2,6 +2,173 @@ | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="NetCore"> | ||||
|       <UniqueIdentifier>{8fd34284-5041-4d4d-802b-f74e6937fb93}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
|       <UniqueIdentifier>{8374b2df-5899-4dc8-9256-6f41c7d293af}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Source Files"> | ||||
|       <UniqueIdentifier>{2b6c78c7-a628-407f-b009-1def77b72cc3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="_Suite"> | ||||
|       <UniqueIdentifier>{b100f247-a3bc-4d4d-bb26-8007aa8faf66}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="_Suite\Header Files"> | ||||
|       <UniqueIdentifier>{e7a26e0b-836c-4044-a991-39fe6582b916}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="_Suite\Source Files"> | ||||
|       <UniqueIdentifier>{e6d98da1-96d3-475c-8b56-739a6f11307d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="_Driver"> | ||||
|       <UniqueIdentifier>{299dfbde-165d-4012-9e10-504b5fe7d137}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="_Driver\Source Files"> | ||||
|       <UniqueIdentifier>{ccf4bb9f-dfab-48e6-bda3-7af19964d7f5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets"> | ||||
|       <UniqueIdentifier>{3c9a4501-fe57-4330-9a82-ef4125285683}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Header Files"> | ||||
|       <UniqueIdentifier>{b5d2fafc-cc93-4a55-9cd9-fb0e00884ef3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Sockets\Source Files"> | ||||
|       <UniqueIdentifier>{aae8072c-c43f-4838-a523-e418d6c181a2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages"> | ||||
|       <UniqueIdentifier>{c8f64c2a-d223-47fa-9132-33757148ba66}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Header Files"> | ||||
|       <UniqueIdentifier>{77ba14ac-9d9d-4acf-9bb4-92221afd94c4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Messages\Source Files"> | ||||
|       <UniqueIdentifier>{f0612864-a55c-4ccd-b7fe-0ce2c5b1f981}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP"> | ||||
|       <UniqueIdentifier>{1b599fc6-d3cc-48d3-81b4-57e06b89fc5a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Header Files"> | ||||
|       <UniqueIdentifier>{a1f079f9-e099-469c-bd66-3f49253d8986}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTP\Source Files"> | ||||
|       <UniqueIdentifier>{779f116d-ba2f-4127-b2fc-4628c696c26a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer"> | ||||
|       <UniqueIdentifier>{4e616ad5-a332-47e1-802d-8e1405737022}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Header Files"> | ||||
|       <UniqueIdentifier>{dca364ec-80fe-4efa-80fb-262704f3e9f1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="TCPServer\Source Files"> | ||||
|       <UniqueIdentifier>{218a32aa-0296-4294-956c-69a073ec88b3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer"> | ||||
|       <UniqueIdentifier>{9d9abf3d-5524-4809-9728-00b4e72e55a6}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Header Files"> | ||||
|       <UniqueIdentifier>{5e1a3d45-1a90-4e36-bbe0-6557fdf99ee3}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPServer\Source Files"> | ||||
|       <UniqueIdentifier>{81246b85-ce01-428c-94dd-20063d2f34dc}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML"> | ||||
|       <UniqueIdentifier>{28bce7bd-cc3e-4b70-9702-ad7a4d383af1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Header Files"> | ||||
|       <UniqueIdentifier>{b9e5422b-b33b-426e-9652-9043ed3bb407}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTML\Source Files"> | ||||
|       <UniqueIdentifier>{ad4153c5-c306-4301-adca-b9f9d88fc878}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient"> | ||||
|       <UniqueIdentifier>{55a4195b-7abb-46e2-97bd-33514e81b42d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{5091a3c3-4f6a-4f82-bb68-8d0af73353e1}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="HTTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{4ae26cd0-5d30-440d-8e1e-0960612d1fdd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient"> | ||||
|       <UniqueIdentifier>{6cba48e5-b2c5-4ccd-a885-d24fbc3cdfd4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Header Files"> | ||||
|       <UniqueIdentifier>{b91c5670-ba96-4a68-bbd9-16bdc96714ba}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="FTPClient\Source Files"> | ||||
|       <UniqueIdentifier>{5dffd684-fc2b-4b98-8399-e07547284cdf}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor"> | ||||
|       <UniqueIdentifier>{7def3556-ad47-479c-aa2c-47d2c5d5d72f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Header Files"> | ||||
|       <UniqueIdentifier>{eaf50a82-f987-49aa-82ba-45a48420d21f}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Reactor\Source Files"> | ||||
|       <UniqueIdentifier>{61296c01-e573-4647-8d23-6dc6c1413b01}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail"> | ||||
|       <UniqueIdentifier>{0e300645-2c8d-4f0f-8a6d-5691369eef3a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Header Files"> | ||||
|       <UniqueIdentifier>{d9d3c50b-8430-486c-bf0c-2871617108ba}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Mail\Source Files"> | ||||
|       <UniqueIdentifier>{1addeb3f-65d2-4eab-b139-0de2c143dbb9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP"> | ||||
|       <UniqueIdentifier>{f8be8317-a8ac-4987-982a-c7841b1424fd}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Header Files"> | ||||
|       <UniqueIdentifier>{cfc4aaa1-171f-48cd-a763-1104a5c9d7c9}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="ICMP\Source Files"> | ||||
|       <UniqueIdentifier>{1c6d9527-2c97-4fe9-8741-f3234859d09e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP"> | ||||
|       <UniqueIdentifier>{d009a5e8-68d3-46e2-b28e-3cc9b3579be5}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Header Files"> | ||||
|       <UniqueIdentifier>{a531dfcc-d6f1-420e-a3b6-85bf6fc6aa81}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NTP\Source Files"> | ||||
|       <UniqueIdentifier>{a7449a2e-8536-455d-bbc1-7346542fd14b}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging"> | ||||
|       <UniqueIdentifier>{d3b068ab-6a55-4f67-98c6-3355c5da158e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Header Files"> | ||||
|       <UniqueIdentifier>{d130dc6a-df34-4a1f-aa09-738b7cfcc2e0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="Logging\Source Files"> | ||||
|       <UniqueIdentifier>{00782206-4918-4d6f-a646-9dcde41e030e}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket"> | ||||
|       <UniqueIdentifier>{73fc95f5-80a0-4bfa-95b8-70aa672b8f48}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Header Files"> | ||||
|       <UniqueIdentifier>{a2570d2f-defe-40a8-8091-ccaa13545d2d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="WebSocket\Source Files"> | ||||
|       <UniqueIdentifier>{5eda9803-086b-4e46-a366-dd45f6e3f203}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth"> | ||||
|       <UniqueIdentifier>{c9b8927e-10dc-4dc9-8205-9fac549fb9d4}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Header Files"> | ||||
|       <UniqueIdentifier>{faed4c5f-51db-4881-9909-3719990a9ee0}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="OAuth\Source Files"> | ||||
|       <UniqueIdentifier>{6ef4b606-5466-453e-a672-4329c984923d}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP"> | ||||
|       <UniqueIdentifier>{4b0efdd4-8d14-48bf-b1d7-d199db870aac}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Source Files"> | ||||
|       <UniqueIdentifier>{de49d06d-e74f-414a-9fb6-0014b701787a}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="UDP\Header Files"> | ||||
|       <UniqueIdentifier>{46752604-f224-4bff-85b2-6b6f1a82199b}</UniqueIdentifier> | ||||
| ======= | ||||
|       <UniqueIdentifier>{6e872251-5e76-4583-8311-a70ec08a00a2}</UniqueIdentifier> | ||||
|     </Filter> | ||||
|     <Filter Include="NetCore\Header Files"> | ||||
| @@ -345,6 +512,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +706,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -60,6 +60,8 @@ | ||||
|     <ClInclude Include="src\TCPServerTest.h"/> | ||||
|     <ClInclude Include="src\TCPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPEchoServer.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\WebSocketTest.h"/> | ||||
|     <ClInclude Include="src\WebSocketTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -146,6 +148,8 @@ | ||||
|     <ClCompile Include="src\TCPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPEchoServer.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTest.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\WinCEDriver.cpp"/> | ||||
|   | ||||
| @@ -345,6 +345,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +539,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -373,6 +373,8 @@ | ||||
|     <ClInclude Include="src\OAuth10CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuth20CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"/> | ||||
| @@ -437,6 +439,8 @@ | ||||
|     <ClCompile Include="src\OAuth10CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> | ||||
|   <ImportGroup Label="ExtensionTargets"/> | ||||
|   | ||||
| @@ -345,6 +345,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +539,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -373,6 +373,8 @@ | ||||
|     <ClInclude Include="src\OAuth10CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuth20CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"/> | ||||
| @@ -437,6 +439,8 @@ | ||||
|     <ClCompile Include="src\OAuth10CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> | ||||
|   <ImportGroup Label="ExtensionTargets"/> | ||||
|   | ||||
| @@ -345,6 +345,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +539,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -363,6 +363,8 @@ | ||||
|     <ClInclude Include="src\TCPServerTest.h"/> | ||||
|     <ClInclude Include="src\TCPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPEchoServer.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\WebSocketTest.h"/> | ||||
|     <ClInclude Include="src\WebSocketTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -427,6 +429,8 @@ | ||||
|     <ClCompile Include="src\TCPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPEchoServer.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTest.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -345,6 +345,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +539,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -173,7 +173,7 @@ | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>CppUnit.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>bin\TestSuite.exe</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
| @@ -202,7 +202,7 @@ | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>CppUnitmtd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>bin\static_mt\TestSuited.exe</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <SuppressStartupBanner>true</SuppressStartupBanner> | ||||
| @@ -233,7 +233,7 @@ | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>CppUnitmt.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>bin\static_mt\TestSuite.exe</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
| @@ -262,7 +262,7 @@ | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>CppUnitmdd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>bin\static_md\TestSuited.exe</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <SuppressStartupBanner>true</SuppressStartupBanner> | ||||
| @@ -293,7 +293,7 @@ | ||||
|       <CompileAs>Default</CompileAs> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>CppUnitmd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <OutputFile>bin\static_md\TestSuite.exe</OutputFile> | ||||
|       <AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
| @@ -363,6 +363,8 @@ | ||||
|     <ClInclude Include="src\TCPServerTest.h"/> | ||||
|     <ClInclude Include="src\TCPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPEchoServer.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\WebSocketTest.h"/> | ||||
|     <ClInclude Include="src\WebSocketTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -427,6 +429,8 @@ | ||||
|     <ClCompile Include="src\TCPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPEchoServer.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTest.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -345,6 +345,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +539,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -363,6 +363,8 @@ | ||||
|     <ClInclude Include="src\TCPServerTest.h"/> | ||||
|     <ClInclude Include="src\TCPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPEchoServer.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|     <ClInclude Include="src\WebSocketTest.h"/> | ||||
|     <ClInclude Include="src\WebSocketTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
| @@ -427,6 +429,8 @@ | ||||
|     <ClCompile Include="src\TCPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\TCPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPEchoServer.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTest.cpp"/> | ||||
|     <ClCompile Include="src\WebSocketTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   | ||||
| @@ -345,6 +345,12 @@ | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"> | ||||
|       <Filter>OAuth\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTest.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"> | ||||
|       <Filter>UDP\Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"> | ||||
| @@ -533,5 +539,11 @@ | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"> | ||||
|       <Filter>OAuth\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"> | ||||
|       <Filter>UDP\Source Files</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -848,6 +848,23 @@ | ||||
| 					RelativePath=".\src\OAuthTestSuite.cpp"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 		<Filter | ||||
| 			Name="UDP"> | ||||
| 			<Filter | ||||
| 				Name="Source Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTest.cpp"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTestSuite.cpp"/> | ||||
| 			</Filter> | ||||
| 			<Filter | ||||
| 				Name="Header Files"> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTest.h"/> | ||||
| 				<File | ||||
| 					RelativePath=".\src\UDPServerTestSuite.h"/> | ||||
| 			</Filter> | ||||
| 		</Filter> | ||||
| 	</Files> | ||||
| 	<Globals/> | ||||
| </VisualStudioProject> | ||||
|   | ||||
| @@ -373,6 +373,8 @@ | ||||
|     <ClInclude Include="src\OAuth10CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuth20CredentialsTest.h"/> | ||||
|     <ClInclude Include="src\OAuthTestSuite.h"/> | ||||
|     <ClInclude Include="src\UDPServerTest.h"/> | ||||
|     <ClInclude Include="src\UDPServerTestSuite.h"/> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="src\DNSTest.cpp"/> | ||||
| @@ -437,6 +439,8 @@ | ||||
|     <ClCompile Include="src\OAuth10CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuth20CredentialsTest.cpp"/> | ||||
|     <ClCompile Include="src\OAuthTestSuite.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTest.cpp"/> | ||||
|     <ClCompile Include="src\UDPServerTestSuite.cpp"/> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/> | ||||
|   <ImportGroup Label="ExtensionTargets"/> | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user