lumiera_/src/proc/engine/engine-service-mock.hpp
Ichthyostega 77066ee3ce WIP: how to start the actual calculation streams within EngineService
this draft fills in the structure how to get from an invocation
of the engine service to the starting of actual CalcStream instances.

Basically the EngineService implementation is repsonsile to
instruct the Segmentation to provide a suitable Dispatcher.
2013-06-03 05:25:13 +02:00

105 lines
3.2 KiB
C++

/*
ENGINE-SERVICE-MOCK.hpp - dummy render engine implementation for test/development
Copyright (C) Lumiera.org
2012, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/** @file engine-service-mock.hpp
** Placeholder implementation of the render engine for test and diagnostics.
** This implementation can be used as a drop-in replacement of the real engine.
** Of course, it is lacking most of the functionality; it is just usable to detect
** and verify the actual engine setup and invocation that \em would happen.
**
** @todo 1/2012 until the real render engine is usable, this mock implementation
** will stand-in, allowing us to develop the other parts of the play/render subsystem.
**
** @see proc::engine::EngineService "the real thing"
** @see render-configurator.cpp (activating the mock or the real engine)
** @see DummyPlayConnection
** @see EngineInterface_test
** @see CalcStream_test
*/
#ifndef PROC_ENGINE_ENGINE_SERVICE_MOCK_H
#define PROC_ENGINE_ENGINE_SERVICE_MOCK_H
#include "lib/error.hpp"
//#include "include/dummy-player-facade.h"
//#include "include/display-facade.h"
#include "proc/engine/calc-stream.hpp"
#include "proc/mobject/model-port.hpp"
#include "proc/play/timings.hpp"
#include "proc/play/output-slot.hpp"
//#include "common/instancehandle.hpp"
//#include "lib/singleton-ref.hpp"
#include "proc/engine/engine-service.hpp"
#include "lib/scoped-ptrvect.hpp"
//
#include <boost/noncopyable.hpp>
//#include <boost/scoped_ptr.hpp>
//#include <string>
namespace proc {
namespace node { class DummyTick; }
namespace engine{
// using std::string;
// using lumiera::Subsys;
// using lumiera::Display;
// using lumiera::DummyPlayer;
using mobject::ModelPort;
using proc::play::Timings;
typedef EngineService::Quality Quality;
/****************************************************************
* Variant of the render engine, reconfigured for mock operation.
* Especially, this setup leaves out most of the actual Lumiera
* engine's implementation facilities. There is no scheduler
* and no frame cache; rather we perform simple dependent
* calculations which might block.
*/
class EngineServiceMock
: public EngineService
{
lib::ScopedPtrVect<node::DummyTick> processors_;
public:
EngineServiceMock();
protected:
virtual RenderEnvironmentClosure& configureCalculation (ModelPort,Timings,Quality);
};
}} // namespace proc::engine
#endif