#include "singleinstance.h"// 包含SingleInstance类的头文件

SingleInstance::SingleInstance(QObject *parent) : QObject(parent)// SingleInstance类的构造函数
{
    // 连接QLocalServer的newConnection信号到一个lambda表达式槽
    // 当有新连接时，发出newInstance信号
    connect(&m_server, &QLocalServer::newConnection, [this]() { emit newInstance(); });
}

void SingleInstance::listen(const QString &name)// 监听指定名称的本地服务器
{
    m_server.removeServer(name);// 移除已存在的同名服务器
    m_server.listen(name);// 开始监听指定名称的本地服务器
}

bool SingleInstance::hasPrevious(const QString &name)// 检查是否有其他实例正在运行
{
    QLocalSocket socket; // 创建一个本地套接字对象
    socket.connectToServer(name, QLocalSocket::ReadOnly);// 尝试连接到指定名称的服务器

    return socket.waitForConnected();// 等待连接结果
}
