68 lines
1.5 KiB
C++
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);
|
|
}
|
|
}
|