/* Blinker
Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org>
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html
a blinkenarea.org project */
#include <set>
#include <BlinkenLib/BlinkenFrame.h>
#include "Stream.h"
#include "StreamRecv.h"
namespace Blinker {
/// constructor
Stream::Stream():
m_pFrame(NULL)
{
}
/// virtual destructor
Stream::~Stream()
{
// free current frame
if (m_pFrame)
BlinkenFrameFree(m_pFrame);
}
/**
* @brief attach a stream receiver
* @param[in] recv stream receiver to attach
*/
void Stream::attach(StreamRecv *recv)
{
m_recvs.insert(recv);
// send current frame to receiver
if (m_pFrame)
recv->setFrame(m_pFrame);
else
recv->setNoFrame();
}
/**
* @brief detach a stream receiver
* @param[in] recv stream receiver to detach
*/
void Stream::detach(StreamRecv *recv)
{
m_recvs.erase(recv);
}