Adds initial intermediate qt6 porting state
This commit is contained in:
11247 files changed
+1891537
No files matched your search
@@ -0,0 +1,86 @@
|
||||
|
||||
|
||||
|
||||
#include "cbi_recvfile.h"
|
||||
#include "workerbase.h"
|
||||
|
||||
#include <QtNetwork/QAbstractSocket>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QFile>
|
||||
#include <stdio.h>
|
||||
|
||||
CBI_Recvfile::CBI_Recvfile(unsigned short port)
|
||||
: CommandInterface(port, "RECV_FILE")
|
||||
{}
|
||||
|
||||
void CBI_Recvfile::handleCommandInternal(const QVector<QByteArray> &args)
|
||||
{
|
||||
if (args.count() != 2)
|
||||
{
|
||||
writeError(QLatin1String("Invalid arg count: RECV_FILE <filename> <filesize>"));
|
||||
return;
|
||||
}
|
||||
|
||||
QString fn = QString::fromUtf8(args[0]);
|
||||
int size;
|
||||
getValue(args[1], size);
|
||||
|
||||
QFile *f = new QFile(fn);
|
||||
if (!f->open(QIODevice::WriteOnly | QIODevice::Truncate))
|
||||
{
|
||||
writeError(QStringLiteral("Could not open %1 for writing").arg(fn));
|
||||
return;
|
||||
}
|
||||
m_wbMap.insert(workerBase(), QPair<QIODevice *, int>(f, size));
|
||||
workerBase()->redirectDataHandling(true, this);
|
||||
}
|
||||
|
||||
void CBI_Recvfile::newPlainData()
|
||||
{
|
||||
WorkerBase *wb = workerBase();
|
||||
QAbstractSocket *in = socket();
|
||||
QIODevice *out = m_wbMap[ wb ].first;
|
||||
if (!out)
|
||||
{
|
||||
in->write("ERROR\n");
|
||||
|
||||
wb->redirectDataHandling(false);
|
||||
return;
|
||||
}
|
||||
int size = m_wbMap[ wb ].second;
|
||||
|
||||
|
||||
QByteArray ba(10, 0);
|
||||
do
|
||||
{
|
||||
qint64 bytesRead = in->read(ba.data(), ba.size() < size ? ba.size() : size);
|
||||
if (bytesRead < 0)
|
||||
{
|
||||
in->write("ERROR\n");
|
||||
|
||||
m_wbMap.remove(wb);
|
||||
wb->redirectDataHandling(false);
|
||||
return;
|
||||
}
|
||||
size -= bytesRead;
|
||||
out->write(ba.constData(), bytesRead);
|
||||
}
|
||||
while (size > 0 && in->bytesAvailable());
|
||||
|
||||
|
||||
if (size != 0)
|
||||
{
|
||||
m_wbMap[ wb ].second = size;
|
||||
return;
|
||||
}
|
||||
out->close();
|
||||
delete out;
|
||||
|
||||
m_wbMap.remove(wb);
|
||||
wb->redirectDataHandling(false);
|
||||
}
|
||||
|
||||
QString CBI_Recvfile::help() const
|
||||
{
|
||||
return QLatin1String("RECV_FILE <filename> <filesize>");
|
||||
}
|
||||
Reference in new issue
Block a user