Files
2026-02-01 22:23:06 +08:00

68 lines
1.5 KiB
C++

/*
* @Date: 2024-09-02 09:59:09
* @LastEditors: Jacky
* @LastEditTime: 2024-09-13 15:33:59
* @FilePath: /GeneralTracker/BufferPool/DataProcessBase.cpp
*/
#include "DataProcessBase.h"
std::map<std::string, DataProcessBase*> g_mapObserver;
DataProcessBase::DataProcessBase()
{
}
DataProcessBase::~DataProcessBase()
{
}
std::string DataProcessBase::name()
{
return m_pcName;
}
void DataProcessBase::jionCtrl()
{
g_mapObserver[m_pcName] = this;
_message_filter_enable = true;
}
int DataProcessBase::notify(const char* name, const char* data, void* value)
{
g_mapObserver[std::string(name)]->set_data(data, value);
return 1;
}
void DataProcessBase::linkV(DataProcessBase* Dst)
{
if(isExist(Dst)){
return;
}
DataProcessBase* mq = (DataProcessBase*)Dst;
m_listDstQueue.push_back(mq);
}
void DataProcessBase::unLinkV(DataProcessBase* Dst)
{
DataProcessBase* mq = (DataProcessBase*)Dst;
m_listDstQueue.remove(mq);
}
bool DataProcessBase::isExist(DataProcessBase *dst){
auto iter = std::find(m_listDstQueue.begin(), m_listDstQueue.end(), dst);
if(iter != m_listDstQueue.end()){
return true;
}else{
return false;
}
}
void DataProcessBase::push_input_pipe(pool::IMemoryBlock* block)
{
//将buffer 推送到下一节点的队列中。
for(auto iter = m_listDstQueue.begin(); iter != m_listDstQueue.end(); iter ++){
DataProcessBase* mq = *iter;
mq->push_data(this, block);
// m_pSelfQueue.sendFrame(&mq->m_pSelfQueue, block);
}
}