Issue #15 Shared state unittest

This commit is contained in:
Mat Sutcliffe
2020-07-31 00:25:16 +01:00
parent 46caf4640b
commit 151810d6fc
14 changed files with 461 additions and 11 deletions

View File

@@ -53,7 +53,7 @@ namespace BlackMisc
virtual bool isConnected() const = 0;
//! Get a duplex object for the calling process.
virtual std::pair<QSharedPointer<IDuplex>, QFuture<void>> getDuplex() = 0;
virtual std::pair<QSharedPointer<IDuplex>, QFuture<void>> getDuplex(const CIdentifier &) = 0;
public slots:
//! Create a duplex object for the identified process.

View File

@@ -24,10 +24,10 @@ namespace BlackMisc
if (server) { server->addObject(BLACKMISC_HUB_PATH, this); }
}
std::pair<QSharedPointer<IDuplex>, QFuture<void>> CHub::getDuplex()
std::pair<QSharedPointer<IDuplex>, QFuture<void>> CHub::getDuplex(const CIdentifier &identifier)
{
auto future = openDuplexAsync(CIdentifier::anonymous());
return std::make_pair(m_clients.value(CIdentifier::anonymous()), future);
auto future = openDuplexAsync(identifier);
return std::make_pair(m_clients.value(identifier), future);
}
bool CHub::openDuplex(const BlackMisc::CIdentifier &client)

View File

@@ -48,8 +48,7 @@ namespace BlackMisc
//! \name Interface implementations
//! @{
virtual bool isConnected() const override { return true; }
virtual std::pair<QSharedPointer<IDuplex>, QFuture<void>> getDuplex() override;
//! @}
virtual std::pair<QSharedPointer<IDuplex>, QFuture<void>> getDuplex(const CIdentifier &) override;
public slots:
//! \name Interface implementations

View File

@@ -31,11 +31,11 @@ namespace BlackMisc
return m_interface->isValid();
}
std::pair<QSharedPointer<IDuplex>, QFuture<void>> CHubProxy::getDuplex()
std::pair<QSharedPointer<IDuplex>, QFuture<void>> CHubProxy::getDuplex(const CIdentifier &identifier)
{
auto duplex = QSharedPointer<CDuplexProxy>::create(m_interface->connection(), m_service, this);
connect(duplex.get(), &QObject::destroyed, this, [ = ] { closeDuplex(CIdentifier::anonymous()); });
return std::make_pair(duplex, openDuplexAsync(CIdentifier::anonymous()));
connect(duplex.get(), &QObject::destroyed, this, [ = ] { closeDuplex(identifier); });
return std::make_pair(duplex, openDuplexAsync(identifier));
}
bool CHubProxy::openDuplex(const CIdentifier& client)

View File

@@ -41,7 +41,7 @@ namespace BlackMisc
//! \name Interface implementations
//! @{
virtual bool isConnected() const override;
virtual std::pair<QSharedPointer<IDuplex>, QFuture<void>> getDuplex() override;
virtual std::pair<QSharedPointer<IDuplex>, QFuture<void>> getDuplex(const CIdentifier &) override;
//! @}
public slots: