[DEV] add mutex
This commit is contained in:
parent
7be8623614
commit
948ad6b726
@ -270,9 +270,11 @@ std::chrono::system_clock::time_point airtio::Interface::getCurrentTime() const
|
|||||||
|
|
||||||
|
|
||||||
void airtio::Interface::systemNewInputData(std::chrono::system_clock::time_point _time, void* _data, size_t _nbChunk) {
|
void airtio::Interface::systemNewInputData(std::chrono::system_clock::time_point _time, void* _data, size_t _nbChunk) {
|
||||||
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
m_process->push(_time, _data, _nbChunk);
|
m_process->push(_time, _data, _nbChunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
void airtio::Interface::systemNeedOutputData(std::chrono::system_clock::time_point _time, void*& _data, size_t& _nbChunk, size_t _chunkSize) {
|
void airtio::Interface::systemNeedOutputData(std::chrono::system_clock::time_point _time, void*& _data, size_t& _nbChunk, size_t _chunkSize) {
|
||||||
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
m_process->pull(_time, _data, _nbChunk);//, _chunkSize);
|
m_process->pull(_time, _data, _nbChunk);//, _chunkSize);
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ airtio::io::Node::Node(const std::string& _streamName, bool _isInput) :
|
|||||||
airtio::io::Node::~Node() {
|
airtio::io::Node::~Node() {
|
||||||
std::unique_lock<std::mutex> lock(m_mutex);
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
AIRTIO_INFO("-----------------------------------------------------------------");
|
AIRTIO_INFO("-----------------------------------------------------------------");
|
||||||
AIRTIO_INFO("-- DESTRO NODE --");
|
AIRTIO_INFO("-- DESTROY NODE --");
|
||||||
AIRTIO_INFO("-----------------------------------------------------------------");
|
AIRTIO_INFO("-----------------------------------------------------------------");
|
||||||
AIRTIO_INFO("close input stream");
|
AIRTIO_INFO("close input stream");
|
||||||
if (m_adac.isStreamOpen() ) {
|
if (m_adac.isStreamOpen() ) {
|
||||||
@ -230,24 +230,30 @@ void airtio::io::Node::stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void airtio::io::Node::interfaceAdd(const std::shared_ptr<airtio::Interface>& _interface) {
|
void airtio::io::Node::interfaceAdd(const std::shared_ptr<airtio::Interface>& _interface) {
|
||||||
for (size_t iii=0; iii< m_list.size(); ++iii) {
|
{
|
||||||
if (_interface == m_list[iii]) {
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
return;
|
for (size_t iii=0; iii< m_list.size(); ++iii) {
|
||||||
|
if (_interface == m_list[iii]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
AIRTIO_INFO("ADD interface for stream : '" << m_streamName << "' mode=" << (m_isInput?"input":"output") );
|
||||||
|
m_list.push_back(_interface);
|
||||||
}
|
}
|
||||||
AIRTIO_INFO("ADD interface for stream : '" << m_streamName << "' mode=" << (m_isInput?"input":"output") );
|
|
||||||
m_list.push_back(_interface);
|
|
||||||
if (m_list.size() == 1) {
|
if (m_list.size() == 1) {
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void airtio::io::Node::interfaceRemove(const std::shared_ptr<airtio::Interface>& _interface) {
|
void airtio::io::Node::interfaceRemove(const std::shared_ptr<airtio::Interface>& _interface) {
|
||||||
for (size_t iii=0; iii< m_list.size(); ++iii) {
|
{
|
||||||
if (_interface == m_list[iii]) {
|
std::unique_lock<std::mutex> lock(m_mutex);
|
||||||
m_list.erase(m_list.begin()+iii);
|
for (size_t iii=0; iii< m_list.size(); ++iii) {
|
||||||
AIRTIO_INFO("RM interface for stream : '" << m_streamName << "' mode=" << (m_isInput?"input":"output") );
|
if (_interface == m_list[iii]) {
|
||||||
break;
|
m_list.erase(m_list.begin()+iii);
|
||||||
|
AIRTIO_INFO("RM interface for stream : '" << m_streamName << "' mode=" << (m_isInput?"input":"output") );
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_list.size() == 0) {
|
if (m_list.size() == 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user