/* Blinker
Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
a blinkenarea.org project */
#ifndef MODULEMGR_IMPL_H
#define MODULEMGR_IMPL_H
#include <list>
#include "CallMgr.h"
#include "Directory.h"
#include "Module.h"
#include "ModuleMgr.h"
#include "StreamMgr.h"
#include "TimeCallee.h"
namespace Blinker {
/**
* @brief constructor
* @param[in] callMgr callback manager
* @param[in] streamMgr stream manager
* @param[in] dirBase base directory
*/
template<typename MODULE>
ModuleMgr<MODULE>::ModuleMgr(CallMgr &callMgr, StreamMgr &streamMgr,
const Directory &dirBase):
m_callMgr(callMgr),
m_streamMgr(streamMgr),
m_dirBase(dirBase)
{
updateModuleListFull();
// request call in 1s
m_callMgr.requestTimeCall(this, Time::now() + Time(1));
}
/// destructor
template<typename MODULE>
ModuleMgr<MODULE>::~ModuleMgr()
{
// free all modules
while (!m_moduleList.empty()) {
m_moduleList.back().destroyModule();
m_moduleList.pop_back();
}
}
/// callback when requsted time reached
template<typename MODULE>