Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							060d8b185e 
							
						 
					 
					
						
						
							
							Introduce AsioDualEvent  
						
						
						
						
					 
					
						2025-05-14 12:24:28 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							331ba1f661 
							
						 
					 
					
						
						
							
							Rename AsioConditionVariable to AsioEvent  
						
						... 
						
						
						
						The current implementation is rather similar to Python's threading.Event, than to a CV. 
						
						
					 
					
						2025-04-29 11:39:42 +02:00 
						 
				 
			
				
					
						
							
							
								Julian Brost 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							d3fae440d4 
							
						 
					 
					
						
						
							
							SpawnCoroutine: move callback into wrapper lambda  
						
						... 
						
						
						
						f isn't used otherwise in the function, so if possible, it can just be moved into the lambda, avoiding a copy.
Co-authored-by: Alexander Aleksandrovič Klimov <alexander.klimov@icinga.com> 
						
						
					 
					
						2025-04-15 15:10:12 +02:00 
						 
				 
			
				
					
						
							
							
								Julian Brost 
							
						 
					 
					
						
						
						
						
							
						
						
							d1d399f8b3 
							
						 
					 
					
						
						
							
							Avoid multiple #if in a single function call expression  
						
						... 
						
						
						
						Simply giving two entire call expressions for either Boost version greatly
improves readability in my opinion. 
						
						
					 
					
						2025-04-14 17:30:19 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							fb2b2e2d5b 
							
						 
					 
					
						
						
							
							Don't use removed boost::asio::spawn() overload if Boost >= v1.87  
						
						
						
						
					 
					
						2025-04-14 17:30:19 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							0662f2b719 
							
						 
					 
					
						
						
							
							In a coroutine, re-throw everything ex. std::exception (and inheritors)  
						
						... 
						
						
						
						not just boost::coroutines::detail::forced_unwind.
This is needed because as of Boost 1.87, boost::asio::spawn() uses Fiber, not Coroutine v1.
https://github.com/boostorg/asio/commit/df973a85ed69f021 
This is safe because every actual exception shall inherit from std::exception. Except forced_unwind and its Fiber equivalent, so that `catch(const std::exception&)` doesn't catch them and only them. 
						
						
					 
					
						2025-04-14 17:30:19 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							8f72891228 
							
						 
					 
					
						
						
							
							Document Timeout  
						
						
						
						
					 
					
						2025-01-07 18:20:54 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							3ca7ff7bf4 
							
						 
					 
					
						
						
							
							Timeout: explicitly delete #Timeout(const Timeout&), #Timeout(Timeout&&), #operator=(const Timeout&), #operator=(Timeout&&)  
						
						
						
						
					 
					
						2025-01-07 18:20:52 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							27e0e236cb 
							
						 
					 
					
						
						
							
							Move Timeout instances from heap to stack  
						
						
						
						
					 
					
						2025-01-07 18:20:50 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							959b162913 
							
						 
					 
					
						
						
							
							Timeout#~Timeout(), #Cancel(): support boost::asio::io_context running on multiple threads  
						
						
						
						
					 
					
						2025-01-07 18:19:42 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							cb51649363 
							
						 
					 
					
						
						
							
							Timeout#Timeout(): drop unnecessary template parameters  
						
						
						
						
					 
					
						2025-01-07 18:19:39 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							faaeb4eb2e 
							
						 
					 
					
						
						
							
							Timeout: use a plain callback, not an unnecessary coroutine  
						
						
						
						
					 
					
						2025-01-07 18:18:24 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							92ab913226 
							
						 
					 
					
						
						
							
							Timeout#Timeout(): don't pass yield_context to callback  
						
						... 
						
						
						
						It's not used. Also, the callback shall run completely at once. This ensures that it won't (continue to) run once another coroutine on the strand calls Timeout#Cancel(). 
						
						
					 
					
						2025-01-07 18:18:18 +01:00 
						 
				 
			
				
					
						
							
							
								Eric Lippmann 
							
						 
					 
					
						
						
						
						
							
						
						
							c7293de91d 
							
						 
					 
					
						
						
							
							IoEngine: Always log coroutine exception diagnostics  
						
						... 
						
						
						
						While analyzing a possible memory leak, we encountered several coroutine
exception messages, which unfortunately do not provide any information
about what exactly went wrong, as exception diagnostics were previously
only logged at the notice level. 
						
						
					 
					
						2024-02-08 12:09:06 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							9585a63fa0 
							
						 
					 
					
						
						
							
							Introduce IoEngine::YieldCurrentCoroutine()  
						
						
						
						
					 
					
						2022-03-02 16:39:44 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							647f1547a9 
							
						 
					 
					
						
						
							
							Generalize I/O timeout emulation  
						
						
						
						
					 
					
						2020-06-17 10:31:40 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							b65aed1dd3 
							
						 
					 
					
						
						
							
							IoEngine#SpawnCoroutine(): always terminate coroutines cleanly  
						
						
						
						
					 
					
						2020-02-19 10:51:26 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							0ed0f73d9d 
							
						 
					 
					
						
						
							
							IoEngine#SpawnCoroutine(): remove redundand overload  
						
						
						
						
					 
					
						2020-02-05 15:31:57 +01:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							d98493c90f 
							
						 
					 
					
						
						
							
							IoEngine#SpawnCoroutine(): don't copy parameter  
						
						
						
						
					 
					
						2020-02-05 15:30:03 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							f62f2eb25e 
							
						 
					 
					
						
						
							
							Boost Coroutines: Increase the default stack size from 64 to 256KB  
						
						... 
						
						
						
						refs #7532  
						
						
					 
					
						2019-12-13 17:20:06 +01:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							2c0e0da2d9 
							
						 
					 
					
						
						
							
							Introduce IoEngine::SpawnCoroutine wrapping asio::spawn and Boost exceptions  
						
						... 
						
						
						
						This is required to
- catch all exceptions and wrap them into Boost exceptions. They
are the only ones allowed with Boost.Coroutine.
- set a dedicated coroutine stack size for Windows.
refs #7431  
						
						
					 
					
						2019-09-09 16:40:35 +02:00 
						 
				 
			
				
					
						
							
							
								Michael Friedrich 
							
						 
					 
					
						
						
						
						
							
						
						
							5fa7331cc9 
							
						 
					 
					
						
						
							
							Quality: Replace deprecated Boost IO service code  
						
						... 
						
						
						
						https://github.com/boostorg/asio/issues/110 
https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp03/services/logger_service.hpp  
					
						2019-09-09 15:27:57 +02:00 
						 
				 
			
				
					
						
							
							
								Michael Insel 
							
						 
					 
					
						
						
						
						
							
						
						
							a6a0631e99 
							
						 
					 
					
						
						
							
							Unify copyright headers  
						
						... 
						
						
						
						Update (left over) copyright headers to generic copyright headers. 
						
						
					 
					
						2019-05-24 16:25:32 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							79220ee647 
							
						 
					 
					
						
						
							
							io-engine.hpp: fix missing namespace  
						
						
						
						
					 
					
						2019-04-01 13:31:16 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							8b3efe5759 
							
						 
					 
					
						
						
							
							Introduce AsioConditionVariable  
						
						
						
						
					 
					
						2019-04-01 13:31:16 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							b384f859c9 
							
						 
					 
					
						
						
							
							Make IoEngine::m_CpuBoundSemaphore signed  
						
						
						
						
					 
					
						2019-04-01 13:31:16 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							282f8fd173 
							
						 
					 
					
						
						
							
							IoEngine: explicitly join I/O threads  
						
						
						
						
					 
					
						2019-04-01 11:40:14 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							ac72ca4ae6 
							
						 
					 
					
						
						
							
							Don't warn that Boost.Coroutine v1 is deprecated  
						
						
						
						
					 
					
						2019-04-01 11:40:14 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							d7b465ce74 
							
						 
					 
					
						
						
							
							Implement IoBoundWorkSlot  
						
						
						
						
					 
					
						2019-04-01 11:40:14 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							2d7714802d 
							
						 
					 
					
						
						
							
							Allow CpuBoundWork to be done before end of scope  
						
						
						
						
					 
					
						2019-04-01 11:40:14 +02:00 
						 
				 
			
				
					
						
							
							
								Alexander A. Klimov 
							
						 
					 
					
						
						
						
						
							
						
						
							c547e9a863 
							
						 
					 
					
						
						
							
							Implement basic I/O engine  
						
						
						
						
					 
					
						2019-04-01 11:40:14 +02:00