+ try\r
+ {\r
+ if(consumer->send(frame))\r
+ ++it;\r
+ else\r
+ consumers_.erase(it++);\r
+ }\r
+ catch(...)\r
+ {\r
+ CASPAR_LOG_CURRENT_EXCEPTION();\r
+ CASPAR_LOG(warning) << "Trying to restart consumer: " << consumer->print() << L".";\r
+ try\r
+ {\r
+ consumer->initialize(channel_.get_format_desc());\r
+ consumer->send(frame);\r
+ }\r
+ catch(...)\r
+ { \r
+ CASPAR_LOG_CURRENT_EXCEPTION(); \r
+ CASPAR_LOG(warning) << "Consumer restart failed, trying to restart channel: " << consumer->print() << L"."; \r
+\r
+ try\r
+ {\r
+ restart_channel_();\r
+ consumer->initialize(channel_.get_format_desc());\r
+ consumer->send(frame);\r
+ }\r
+ catch(...)\r
+ {\r
+ CASPAR_LOG_CURRENT_EXCEPTION();\r
+ CASPAR_LOG(error) << "Failed to recover consumer: " << consumer->print() << L". Removing it.";\r
+ consumers_.erase(it++);\r
+ }\r
+ }\r
+ }\r