serialTransferTool/connectionManager.cpp

93 lines
2.3 KiB
C++

#include "connectionManager.h"
#include <QDebug>
ConnectionManager::ConnectionManager(QObject *parent): QObject{parent}
{
}
ConnectionManager::~ConnectionManager()
{
}
void ConnectionManager::insert(std::shared_ptr<BaseConnection> conn)
{
if(conn){
bool same = false;
for(int i=0;i<connectionVec.size();i++){
if(conn==connectionVec[i]){
same = true;
break;
}
}
if(!same){
connectionVec.append(conn);
emit connectionAddedSignal(conn);
}else{
emit connectionChangeSignal(conn);
}
}
}
void ConnectionManager::remove(int idx)
{
if(idx>=0 && idx<=connectionVec.length()){
if(connectionVec[idx]->isConnected()){
connectionVec[idx]->close();
}
QString name = connectionVec[idx]->getConnectionName();
connectionVec[idx]->disconnect();
std::shared_ptr<BaseConnection> connPtr = connectionVec[idx];
connectionVec.remove(idx);
emit connectionRemovedSignal(connPtr);
}
}
void ConnectionManager::remove(std::shared_ptr<BaseConnection> conn)
{
int idx = -1;
for(int i=0;i<connectionVec.size();i++){
if(connectionVec[i] == conn){
if(conn->isConnected()){
conn->close();
}
idx = i;
break;
}
}
if(idx>=0){
QString name = connectionVec[idx]->getConnectionName();
connectionVec[idx]->disconnect();
connectionVec.remove(idx);
emit connectionRemovedSignal(conn);
}
}
int ConnectionManager::getConnectionCounts()
{
return connectionVec.length();
}
std::shared_ptr<BaseConnection> ConnectionManager::getConnection(int idx)
{
std::shared_ptr<BaseConnection> conn = nullptr;
if(idx>=0 && idx<=connectionVec.length()){
conn = connectionVec[idx];
}
return conn;
}
std::shared_ptr<BaseConnection> ConnectionManager::getConnection(const QString &connectionName)
{
std::shared_ptr<BaseConnection> conn = nullptr;
for(int i=0;i<connectionVec.size();i++){
if(connectionName==connectionVec[i]->getConnectionName()){
conn = connectionVec[i];
}
}
return conn;
}