Jean-Yves Didier

Suppression des fuites mémoire.

This diff is collapsed. Click to expand it.
#include "arcsnetworkframes.h"
#include <QDataStream>
#include <QByteArray>
#include <iostream>
#include <arcs/arcslog.h>
namespace ARCS {
......@@ -43,6 +42,9 @@ QHash<int,QString> ARCS::Network::initErrors()
res[400]="CALL_REQUEST: wrong id (%1)";
res[401]="CALL_REQUEST: wrong port number (%1)";
res[404]="CALL_REQUEST: wrong signal name (%1)";
res[407]="CALL_REQUEST: network error (while connecting): '%1'";
res[408]="CALL_REQUEST: network error (while reading frame): '%1'";
res[409]="CALL_REQUEST: network error (while writing frame): '%1'";
res[405]="IFACE_REQUEST: time out with error '%1'";
res[409]="IFACE_REQUEST: network error (while writing frame): '%1'";
......@@ -187,9 +189,6 @@ bool ARCSNetworkFrame::writeFrame(QIODevice* device)
device->write(block);
return device->waitForBytesWritten(TimeOut);
/*{
std::cerr << "[Network] Didn't wait enough to write all bytes" << std::endl;
}*/
}
......
......@@ -4,7 +4,7 @@
#include "arcsnetworkcomponent.h"
#include <arcs/arcsfactory.h>
#include <QTcpSocket>
#include <iostream>
#include <QSharedPointer>
ARCSNetworkProxySlot::ARCSNetworkProxySlot(ARCSAbstractComponent* cmp, QObject* parent) : QObject(parent)
{
......@@ -40,27 +40,31 @@ int ARCSNetworkProxySlot::qt_metacall(QMetaObject::Call call,int id, void** argu
}
// call here slot with all its params.
QTcpSocket* socket = new QTcpSocket(this);
QSharedPointer<QTcpSocket> socket(new QTcpSocket(this));
socket->connectToHost(hostName, port);
if (!socket->waitForConnected(ARCSNetworkFrame::TimeOut))
{
std::cerr << "Erreur 408: CALL_REQUEST error: dpassement du time out " << qPrintable(socket->errorString()) << std::endl;
std::cerr << "Erreur 408: params are " << qPrintable(hostName) << ": " << port
<< " (" << this << ")" << std::endl;
ARCS::Network::logError(407,socket->errorString());
/* std::cerr << "Erreur 408: params are " << qPrintable(hostName) << ": " << port
<< " (" << this << ")" << std::endl;*/
return -1;
}
// cration de la frame
ARCSNetworkFrame frameRequest(ARCSNetworkFrame::CALL_REQUEST);
((ARCSNetworkCallRequest*)frameRequest.getData())->setParams(slotId, request);
frameRequest.writeFrame(socket);
ARCSNetworkFrame* response = ARCSNetworkFrame::readFrame(socket);
if( !frameRequest.writeFrame(socket.data()))
{
ARCS::Network::logError(409,socket->errorString());
return -1;
}
ARCSNetworkFrame* response = ARCSNetworkFrame::readFrame(socket.data());
//! \todo handle response appropriately
// traitement de response -> Non c'est juste pour attendre de manire bloquante !
socket->disconnectFromHost();
if (response)
delete response;
delete socket;
return -1;
}
......@@ -88,15 +92,11 @@ int ARCSNetworkProxySlot::prepareSlotConnect(QString , QString sltName, QString
if (anc)
anc->requestSlotConnect(this);
//! \todo insrer ici un traitement appropri
// else std::cerr <<"Erreur 415 : CONNECT_REQUEST error : erreur de connexion de slot" <<std::endl;
if (metaObject()->indexOfSlot(qPrintable(sltName)) != -1)
{
return metaObject()->indexOfSlot(qPrintable(sltName));
}
// ceci n'est pas une relle erreur
//else std::cerr <<"Erreur 415 : CONNECT_REQUEST error : slot name is wrong" <<std::endl;
return metaObject()->methodCount();
}
......