- ////////////////////////////////////////////////////////////////////////////////////////////////////\r
- /// \fn virtual frame_ptr :::render_frame() = 0;\r
- ///\r
- /// \brief Renders a frame.\r
- /// \r
- /// \note This function is run in through the tbb task_schedular and shall be *non blocking*.\r
- ///\r
- /// \return The frame. \r
- ////////////////////////////////////////////////////////////////////////////////////////////////////\r
- virtual frame_ptr render_frame() = 0;\r
-\r
- ////////////////////////////////////////////////////////////////////////////////////////////////////\r
- /// \fn virtual std::shared_ptr<frame_producer> :::get_following_producer() const\r
- ///\r
- /// \brief Gets the producer which will replace the current producer on EOF. \r
- ///\r
- /// \return The following producer, or nullptr if there is no following producer. \r
- ////////////////////////////////////////////////////////////////////////////////////////////////////\r
- virtual std::shared_ptr<frame_producer> get_following_producer() const { return nullptr; }\r
-\r
- ////////////////////////////////////////////////////////////////////////////////////////////////////\r
- /// \fn virtual void :::set_leading_producer(const std::shared_ptr<frame_producer>& producer)\r
- ///\r
- /// \brief Sets the producer which was run before the current producer. \r
- ///\r
- /// \param producer The leading producer.\r
- ////////////////////////////////////////////////////////////////////////////////////////////////////\r
- virtual void set_leading_producer(const std::shared_ptr<frame_producer>& /*producer*/) {}\r
+ virtual std::wstring print() const = 0; // nothrow\r
+ virtual boost::property_tree::wptree info() const = 0;\r
+\r
+ virtual boost::unique_future<std::wstring> call(const std::wstring&) \r
+ {\r
+ BOOST_THROW_EXCEPTION(not_supported());\r
+ }\r
+\r
+ virtual safe_ptr<frame_producer> get_following_producer() const {return frame_producer::empty();} // nothrow\r
+ virtual void set_leading_producer(const safe_ptr<frame_producer>&) {} // nothrow\r
+ \r
+ virtual uint32_t nb_frames() const {return std::numeric_limits<uint32_t>::max();}\r