Make sure protocol only started once
This commit is contained in:
parent
8027df6373
commit
07e490c038
@ -247,14 +247,28 @@ void ProtocolManager::startProtocol(std::shared_ptr<Protocol> protocol)
|
|||||||
assert(std::this_thread::get_id() == m_asynchronous_update_thread.get_id());
|
assert(std::this_thread::get_id() == m_asynchronous_update_thread.get_id());
|
||||||
OneProtocolType &opt = m_all_protocols[protocol->getProtocolType()];
|
OneProtocolType &opt = m_all_protocols[protocol->getProtocolType()];
|
||||||
opt.addProtocol(protocol);
|
opt.addProtocol(protocol);
|
||||||
protocol->setup();
|
|
||||||
Protocol* protocol_ptr = protocol.get();
|
|
||||||
Log::info("ProtocolManager",
|
|
||||||
"A %s protocol has been started.", typeid(*protocol_ptr).name());
|
|
||||||
|
|
||||||
// setup the protocol and notify it that it's started
|
|
||||||
} // startProtocol
|
} // startProtocol
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
void ProtocolManager::OneProtocolType::addProtocol(std::shared_ptr<Protocol> p)
|
||||||
|
{
|
||||||
|
auto i = std::find(m_protocols.begin(), m_protocols.end(), p);
|
||||||
|
Protocol* protocol_ptr = p.get();
|
||||||
|
if (i == m_protocols.end())
|
||||||
|
{
|
||||||
|
// setup the protocol and notify it that it's started
|
||||||
|
p->setup();
|
||||||
|
Log::info("ProtocolManager",
|
||||||
|
"A %s protocol has been started.", typeid(*protocol_ptr).name());
|
||||||
|
m_protocols.push_back(p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log::warn("ProtocolManager", "A %s protocol has already started.",
|
||||||
|
typeid(*protocol_ptr).name());
|
||||||
|
}
|
||||||
|
} // addProtocol
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
/** Removes a protocol from the list of protocols of a certain type.
|
/** Removes a protocol from the list of protocols of a certain type.
|
||||||
* Note that the protocol is not deleted.
|
* Note that the protocol is not deleted.
|
||||||
|
@ -173,10 +173,7 @@ private:
|
|||||||
m_protocols[0]->handleDisconnects();
|
m_protocols[0]->handleDisconnects();
|
||||||
} // handleDisconnects
|
} // handleDisconnects
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
void addProtocol(std::shared_ptr<Protocol> p)
|
void addProtocol(std::shared_ptr<Protocol> p);
|
||||||
{
|
|
||||||
m_protocols.push_back(p);
|
|
||||||
} // addProtocol
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
/** Returns if there are no protocols of this type registered. */
|
/** Returns if there are no protocols of this type registered. */
|
||||||
bool isEmpty() const { return m_protocols.empty(); }
|
bool isEmpty() const { return m_protocols.empty(); }
|
||||||
|
Loading…
Reference in New Issue
Block a user