// Local includes
#include "main.h"
// Constructor of the timer class
{
qDebug() << "inConstrutor";
connect(timer, SIGNAL(timeout()), this, SLOT(startBackup()));
timer->start(5000);
}
// Start the backup
int Timer::startBackup(){
qDebug() << "inStart" << backingUP;
//return 0;
if(backingUP){
return 2;
}
// Start the backup thread
Backup *backup = new Backup();
// Make a connection for deleting this later when done
//connect(backup, SIGNAL(finished()), backup, SLOT(deleteLater()));
// Set that we are running ATM
backingUP = true;
backup->start();
return 1;
}
// The constructor
{
// This thread can never be terminated
//this->setTerminationEnabled(false);
}
// The function that does everything
void Backup::run()
{
this->doit();
}
void Backup::doit(){
qDebug() << "Doit";
socket = new QSslSocket;
connect(socket, SIGNAL(readyRead()),
this, SLOT(socketReadyRead()));
connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
this, SLOT(sslErrors(QList<QSslError>)));
connect(socket, SIGNAL(encrypted()),
this, SLOT(socketEncrypted()));
// Connect to the server
socket->connectToHostEncrypted(NSettings->value("hostname").toString(), NSettings->value("port").toInt());
// Wait for it to reach the encryted and connected state
if (!socket->waitForEncrypted()) {
qDebug() << "waitForEncrypted Error";
return; // An error occured
}
// This is the protocol
socket->write("ENTERHEADER\r\n");
socket->waitForBytesWritten();
QByteArray username
= NSettings
->value
("user").
toByteArray();
QByteArray device
= NSettings
->value
("device").
toByteArray();
// We first need to LOGIN
this->rite("L"+ username.toBase64() +" "+ device.toBase64());
socket->waitForBytesWritten();
}
// Called whenever there is something to READ in the buffer
void Backup::socketReadyRead(){
qDebug() << socket->bytesAvailable();
qDebug() << str;
bool unconnected
= !socket || socket
->state
() == QAbstractSocket::UnconnectedState;
if(str == "LOGIN SUCCESSFUL"){
for(int i = 1; i <= 1000; i++){
// Was the login successful ?
if(unconnected){
qDebug() << socket->state();
return;
}
this->rite("STORE ABC\r\n");
socket->waitForBytesWritten();
}
}
qDebug() << "End READ";
// Disconnect from the server
//socket->disconnectFromHost();
}
// Called when the connection is fully established
void Backup::socketEncrypted()
{
qDebug() << "Connection Established";
}
// Called when there are SSL errors
void Backup::sslErrors(const QList<QSslError> &errors)
{
foreach (const QSslError &error, errors){
qDebug() << error.errorString();
}
// Ignore Errors
socket->ignoreSslErrors();
}
// Whenever there is a change in the connection STATE, this is called
{
qDebug() << state;
}
// Socket write safe as it appends the length to the beginning of the string
{
return socket->write(data);
}
// Local includes
#include "main.h"
// Constructor of the timer class
Timer::Timer(QObject *parent) : QObject(parent)
{
qDebug() << "inConstrutor";
QTimer *timer = new QTimer();
connect(timer, SIGNAL(timeout()), this, SLOT(startBackup()));
timer->start(5000);
}
// Start the backup
int Timer::startBackup(){
qDebug() << "inStart" << backingUP;
//return 0;
if(backingUP){
return 2;
}
// Start the backup thread
Backup *backup = new Backup();
// Make a connection for deleting this later when done
//connect(backup, SIGNAL(finished()), backup, SLOT(deleteLater()));
// Set that we are running ATM
backingUP = true;
backup->start();
return 1;
}
// The constructor
Backup::Backup(QObject *parent)
: QThread(parent)
{
// This thread can never be terminated
//this->setTerminationEnabled(false);
}
// The function that does everything
void Backup::run()
{
this->doit();
}
void Backup::doit(){
qDebug() << "Doit";
socket = new QSslSocket;
connect(socket, SIGNAL(readyRead()),
this, SLOT(socketReadyRead()));
connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
this, SLOT(sslErrors(QList<QSslError>)));
connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
connect(socket, SIGNAL(encrypted()),
this, SLOT(socketEncrypted()));
// Connect to the server
socket->connectToHostEncrypted(NSettings->value("hostname").toString(), NSettings->value("port").toInt());
// Wait for it to reach the encryted and connected state
if (!socket->waitForEncrypted()) {
qDebug() << "waitForEncrypted Error";
return; // An error occured
}
// This is the protocol
socket->write("ENTERHEADER\r\n");
socket->waitForBytesWritten();
QByteArray username = NSettings->value("user").toByteArray();
QByteArray device = NSettings->value("device").toByteArray();
// We first need to LOGIN
this->rite("L"+ username.toBase64() +" "+ device.toBase64());
socket->waitForBytesWritten();
}
// Called whenever there is something to READ in the buffer
void Backup::socketReadyRead(){
qDebug() << socket->bytesAvailable();
QString str = socket->readAll();
qDebug() << str;
bool unconnected = !socket || socket->state() == QAbstractSocket::UnconnectedState;
if(str == "LOGIN SUCCESSFUL"){
for(int i = 1; i <= 1000; i++){
// Was the login successful ?
if(unconnected){
qDebug() << socket->state();
return;
}
this->rite("STORE ABC\r\n");
socket->waitForBytesWritten();
}
}
qDebug() << "End READ";
// Disconnect from the server
//socket->disconnectFromHost();
}
// Called when the connection is fully established
void Backup::socketEncrypted()
{
qDebug() << "Connection Established";
}
// Called when there are SSL errors
void Backup::sslErrors(const QList<QSslError> &errors)
{
foreach (const QSslError &error, errors){
qDebug() << error.errorString();
}
// Ignore Errors
socket->ignoreSslErrors();
}
// Whenever there is a change in the connection STATE, this is called
void Backup::socketStateChanged(QAbstractSocket::SocketState state)
{
qDebug() << state;
}
// Socket write safe as it appends the length to the beginning of the string
qint64 Backup::rite(const QByteArray & data)
{
return socket->write(data);
}
To copy to clipboard, switch view to plain text mode
inConstrutor
inStart false
Doit
QObject::connect: Cannot queue arguments of type
'QAbstractSocket::SocketState' (Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().)
waitForEncrypted Error
inConstrutor
inStart false
Doit
QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketState'
(Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().)
waitForEncrypted Error
To copy to clipboard, switch view to plain text mode
Bookmarks