#ifndef SENDSYSTEM_H #define SENDSYSTEM_H #include #include #include #include #include #include #include #include class DataParser; class FileData; class SendSystem : public QObject { Q_OBJECT public: explicit SendSystem(QObject* parent = nullptr); ~SendSystem(); void initialize(DataParser* dataParser,QMutex *globalMutex); void setClient(Client* client,QTcpSocket *socket); void sendMessageBlock(QString message); void sendFileBlock(QString path); void sendFileBlock_V2(QString path); void sendFileBlock_V3(QString path); void sendFileBlockByteArray(QByteArray array, PacketType packetType); void sendFileBlockWithRename(QString path,QString newName); void sendFolderBlock(QString path); void sendDeleteBlock(QString path); void sendPacketType(PacketType packet); void sendNotify(QString notify); void sendStop(); void sendCFI(QByteArray array); void sendDocs(QString docPath); void sendXmlAnswer(QByteArray array, PacketType packetType = PacketType::TYPE_XMLANSWER); void sendNeedUpdate(bool flag,quint64 size,quint64 fileCount,quint64 deleteCount); void updateFiles(QList fileSendList, QList deleteList); bool getIsSendStopped() const; void updateFilesFULL(QList fileSendList, QList deleteList); bool waitWrittenData(QString marker, int msec = 500); public slots: void socketClose(); void sendVersion(); void slot_BytesWrittenToSocket(qint64 bytes); signals: void sigLoadHash(); //QByteArray sigSendXMLmessage(QString loginFrom, QString loginTo, QString text, QString userType); //сигнал не используется QByteArray sigSendNotify(QString message); //QByteArray sigSendVersion(); //сигнал не используется private: Client *client; QTcpSocket* socket; DataParser* dataParser; QMutex *globalMutex; QWaitCondition *waitCondition; char* buffer; TypeClientAutorization type; bool isSendStopped; bool flWaitWriten; quint64 fileSize; int countSend; }; #endif // SENDSYSTEM_H