Files
RRJServer/LibServer/Systems/sendsystem.h

83 lines
2.2 KiB
C++

#ifndef SENDSYSTEM_H
#define SENDSYSTEM_H
#include <QObject>
#include <QString>
#include <QtNetwork>
#include <QMutex>
#include <Systems/Parsers/dataparser.h>
#include <Systems/tools.h>
#include <Data/Client.h>
#include <Data/PacketType.h>
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<FileData> fileSendList, QList<FileData> deleteList);
bool getIsSendStopped() const;
void updateFilesFULL(QList<FileData> fileSendList, QList<FileData> 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