/* Blinker
Copyright 2011-2014 Stefan Schuermans <stefan@blinkenarea.org>
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
a blinkenarea.org project */
#ifndef BLINKER_SENDERDEST_IMPL_H
#define BLINKER_SENDERDEST_IMPL_H
#include <string>
#include "Directory.h"
#include "File.h"
#include "Module.h"
#include "Sender.h"
#include "SenderDest.h"
#include "SettingFile.h"
namespace Blinker {
/**
* @brief constructor
* @param[in] sender owning sender object
* @param[in] name destination name
* @param[in] dirBase base directory
*/
template<typename ADDR, typename SOCK>
Sender<ADDR, SOCK>::Dest::Dest(Sender &sender, const std::string &name,
const Directory &dirBase):
m_sender(sender),
m_name(name),
m_fileAddr(dirBase.getFile("addr")),
m_pData(&sender.m_noFrameData)
{
// set up
getAddr();
}
/// destructor
template<typename ADDR, typename SOCK>
Sender<ADDR, SOCK>::Dest::~Dest()
{
// send "no frame" protocol data to old address
send(&m_sender.m_noFrameData);
}
/// check for update of configuration
template<typename ADDR, typename SOCK>
void Sender<ADDR, SOCK>::Dest::updateConfig()
{
// address file was modified -> re-get address
if (m_fileAddr.checkModified())