renamed async block policy
This commit is contained in:
		
							parent
							
								
									4f1ce9189f
								
							
						
					
					
						commit
						7ed8e1b59d
					
				| @ -39,7 +39,7 @@ struct async_factory | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...); |         auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...); | ||||||
|         auto new_logger = std::make_shared<async_logger>(logger_name, std::move(sink), std::move(tp), async_overflow_policy::block_retry); |         auto new_logger = std::make_shared<async_logger>(logger_name, std::move(sink), std::move(tp), async_overflow_policy::block); | ||||||
|         registry::instance().register_and_init(new_logger); |         registry::instance().register_and_init(new_logger); | ||||||
|         return new_logger; |         return new_logger; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -34,13 +34,13 @@ class async_logger SPDLOG_FINAL : public std::enable_shared_from_this<async_logg | |||||||
| public: | public: | ||||||
|     template<class It> |     template<class It> | ||||||
|     async_logger(const std::string &logger_name, const It &begin, const It &end, std::weak_ptr<details::thread_pool> tp, |     async_logger(const std::string &logger_name, const It &begin, const It &end, std::weak_ptr<details::thread_pool> tp, | ||||||
|         async_overflow_policy overflow_policy = async_overflow_policy::block_retry); |         async_overflow_policy overflow_policy = async_overflow_policy::block); | ||||||
| 
 | 
 | ||||||
|     async_logger(const std::string &logger_name, sinks_init_list sinks, std::weak_ptr<details::thread_pool> tp, |     async_logger(const std::string &logger_name, sinks_init_list sinks, std::weak_ptr<details::thread_pool> tp, | ||||||
|         async_overflow_policy overflow_policy = async_overflow_policy::block_retry); |         async_overflow_policy overflow_policy = async_overflow_policy::block); | ||||||
| 
 | 
 | ||||||
|     async_logger(const std::string &logger_name, sink_ptr single_sink, std::weak_ptr<details::thread_pool> tp, |     async_logger(const std::string &logger_name, sink_ptr single_sink, std::weak_ptr<details::thread_pool> tp, | ||||||
|         async_overflow_policy overflow_policy = async_overflow_policy::block_retry); |         async_overflow_policy overflow_policy = async_overflow_policy::block); | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     void sink_it_(details::log_msg &msg) override; |     void sink_it_(details::log_msg &msg) override; | ||||||
|  | |||||||
| @ -63,6 +63,7 @@ using log_clock = std::chrono::system_clock; | |||||||
| using sink_ptr = std::shared_ptr<sinks::sink>; | using sink_ptr = std::shared_ptr<sinks::sink>; | ||||||
| using sinks_init_list = std::initializer_list<sink_ptr>; | using sinks_init_list = std::initializer_list<sink_ptr>; | ||||||
| using formatter_ptr = std::shared_ptr<spdlog::formatter>; | using formatter_ptr = std::shared_ptr<spdlog::formatter>; | ||||||
|  | 
 | ||||||
| #if defined(SPDLOG_NO_ATOMIC_LEVELS) | #if defined(SPDLOG_NO_ATOMIC_LEVELS) | ||||||
| using level_t = details::null_atomic_int; | using level_t = details::null_atomic_int; | ||||||
| #else | #else | ||||||
| @ -126,8 +127,8 @@ using level_hasher = std::hash<int>; | |||||||
| //
 | //
 | ||||||
| enum class async_overflow_policy | enum class async_overflow_policy | ||||||
| { | { | ||||||
|     block_retry,    // Block until message can be enqueued
 |     block,          // Block until message can be enqueued
 | ||||||
|     overrun_oldeset // Discard oldest message in the queue if full when trying to add new item.
 |     overrun_oldest  // Discard oldest message in the queue if full when trying to add new item.
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| //
 | //
 | ||||||
|  | |||||||
| @ -106,14 +106,13 @@ public: | |||||||
|         { |         { | ||||||
|             for (size_t i = 0; i < threads_.size(); i++) |             for (size_t i = 0; i < threads_.size(); i++) | ||||||
|             { |             { | ||||||
|                 post_async_msg_(async_msg(async_msg_type::terminate), async_overflow_policy::block_retry); |                 post_async_msg_(async_msg(async_msg_type::terminate), async_overflow_policy::block); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             for (auto &t : threads_) |             for (auto &t : threads_) | ||||||
|             { |             { | ||||||
|                 t.join(); |                 t.join(); | ||||||
|             } |             } | ||||||
|             // std::cout << "~thread_pool()  msg_counter_: " << msg_counter_ << std::endl;
 |  | ||||||
|         } |         } | ||||||
|         catch (...) |         catch (...) | ||||||
|         { |         { | ||||||
| @ -138,7 +137,7 @@ private: | |||||||
| 
 | 
 | ||||||
|     void post_async_msg_(async_msg &&new_msg, async_overflow_policy overflow_policy) |     void post_async_msg_(async_msg &&new_msg, async_overflow_policy overflow_policy) | ||||||
|     { |     { | ||||||
|         if (overflow_policy == async_overflow_policy::block_retry) |         if (overflow_policy == async_overflow_policy::block) | ||||||
|         { |         { | ||||||
|             q_.enqueue(std::move(new_msg)); |             q_.enqueue(std::move(new_msg)); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -11,7 +11,7 @@ TEST_CASE("basic async test ", "[async]") | |||||||
|     size_t messages = 256; |     size_t messages = 256; | ||||||
|     { |     { | ||||||
|         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); |         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); | ||||||
|         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block_retry); |         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block); | ||||||
|         for (size_t i = 0; i < messages; i++) |         for (size_t i = 0; i < messages; i++) | ||||||
|         { |         { | ||||||
|             logger->info("Hello message #{}", i); |             logger->info("Hello message #{}", i); | ||||||
| @ -30,7 +30,7 @@ TEST_CASE("discard policy ", "[async]") | |||||||
|     size_t messages = 1024; |     size_t messages = 1024; | ||||||
|     { |     { | ||||||
|         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); |         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); | ||||||
|         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::overrun_oldeset); |         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::overrun_oldest); | ||||||
|         for (size_t i = 0; i < messages; i++) |         for (size_t i = 0; i < messages; i++) | ||||||
|         { |         { | ||||||
|             logger->info("Hello message #{}", i); |             logger->info("Hello message #{}", i); | ||||||
| @ -48,7 +48,7 @@ TEST_CASE("flush", "[async]") | |||||||
|     size_t messages = 256; |     size_t messages = 256; | ||||||
|     { |     { | ||||||
|         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); |         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); | ||||||
|         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block_retry); |         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block); | ||||||
|         for (size_t i = 0; i < messages; i++) |         for (size_t i = 0; i < messages; i++) | ||||||
|         { |         { | ||||||
|             logger->info("Hello message #{}", i); |             logger->info("Hello message #{}", i); | ||||||
| @ -69,7 +69,7 @@ TEST_CASE("tp->wait_empty() ", "[async]") | |||||||
|     size_t messages = 100; |     size_t messages = 100; | ||||||
| 
 | 
 | ||||||
|     auto tp = std::make_shared<details::thread_pool>(messages, 2); |     auto tp = std::make_shared<details::thread_pool>(messages, 2); | ||||||
|     auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block_retry); |     auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block); | ||||||
|     for (size_t i = 0; i < messages; i++) |     for (size_t i = 0; i < messages; i++) | ||||||
|     { |     { | ||||||
|         logger->info("Hello message #{}", i); |         logger->info("Hello message #{}", i); | ||||||
| @ -90,7 +90,7 @@ TEST_CASE("multi threads", "[async]") | |||||||
|     size_t n_threads = 10; |     size_t n_threads = 10; | ||||||
|     { |     { | ||||||
|         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); |         auto tp = std::make_shared<details::thread_pool>(queue_size, 1); | ||||||
|         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block_retry); |         auto logger = std::make_shared<async_logger>("as", test_sink, tp, async_overflow_policy::block); | ||||||
| 
 | 
 | ||||||
|         std::vector<std::thread> threads; |         std::vector<std::thread> threads; | ||||||
|         for (size_t i = 0; i < n_threads; i++) |         for (size_t i = 0; i < n_threads; i++) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user