\r
try\r
{\r
- if(!result_future.get())\r
+ if (!result_future.timed_wait(boost::posix_time::seconds(2)))\r
+ {\r
+ BOOST_THROW_EXCEPTION(timed_out() << msg_info(narrow(print()) + " " + narrow(consumer->print()) + " Timed out during send"));\r
+ }\r
+\r
+ if (!result_future.get())\r
{\r
CASPAR_LOG(info) << print() << L" " << consumer->print() << L" Removed.";\r
send_to_consumers_delays_.erase(result_it->first);\r
consumers_.erase(result_it->first);\r
}\r
}\r
- catch(...)\r
+ catch (...)\r
{\r
CASPAR_LOG_CURRENT_EXCEPTION();\r
try\r
{\r
consumer->initialize(format_desc_, audio_channel_layout_, channel_index_);\r
- if(!consumer->send(frame).get())\r
+ auto retry_future = consumer->send(frame);\r
+\r
+ if (!retry_future.timed_wait(boost::posix_time::seconds(2)))\r
+ {\r
+ BOOST_THROW_EXCEPTION(timed_out() << msg_info(narrow(print()) + " " + narrow(consumer->print()) + " Timed out during retry"));\r
+ }\r
+\r
+ if (!retry_future.get())\r
{\r
CASPAR_LOG(info) << print() << L" " << consumer->print() << L" Removed.";\r
send_to_consumers_delays_.erase(result_it->first);\r
consumers_.erase(result_it->first);\r
}\r
}\r
- catch(...)\r
+ catch (...)\r
{\r
CASPAR_LOG_CURRENT_EXCEPTION();\r
CASPAR_LOG(error) << "Failed to recover consumer: " << consumer->print() << L". Removing it.";\r