Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sync.h 787 B
#pragma once

#include <atomic>

#include <QMutex>
#include <QThread>
#include <QWaitCondition>

#include "login.h"
#include "models/roommodel.h"

class Sync : public QThread {
    Q_OBJECT

  public:
    Sync(RoomModel &rooms, Login *login, QObject *parent = 0)
        : QThread(parent), rooms(rooms), stop(false), exit(false) {
        connect(this, &Sync::nextSync, this, &Sync::sync);
    }
    ~Sync();
    void run();

  public slots:
    void startSync();
    void stopSync();

  private slots:
    void sync();

  signals:
    void newRoom(QSharedPointer<Room> room);
    void newInvite(QSharedPointer<Room> room);
    void nextSync();

  private:
    RoomModel &rooms;
    QWaitCondition condition;
    QMutex mutex;
    std::atomic<bool> stop, exit;
    std::string since;
};