Jean-Yves Didier

Passage sur le serveur, suppression des fuites mémoire.

Renormalisation des trames.
Suppression de la trame CONNECT_RESPONSE, introduction de la trame
ERR_RESPONSE.
This diff is collapsed. Click to expand it.
...@@ -32,64 +32,66 @@ QHash<int,QString> ARCS::Network::initErrors() ...@@ -32,64 +32,66 @@ QHash<int,QString> ARCS::Network::initErrors()
32 32
33 /////////////////////////////////////////////////////////////////////////// 33 ///////////////////////////////////////////////////////////////////////////
34 // general errors 34 // general errors
35 - res[600]="Null frame recieved"; 35 + res[600]="error while receiving frame: '%1'";
36 res[601]="Listening on ports 2020 to 2084 failed"; 36 res[601]="Listening on ports 2020 to 2084 failed";
37 res[602]="Cannot listen to port %1"; 37 res[602]="Cannot listen to port %1";
38 res[603]="Not bound to any interface"; 38 res[603]="Not bound to any interface";
39 + res[604]="Call error on id #%1";
39 40
40 /////////////////////////////////////////////////////////////////////////// 41 ///////////////////////////////////////////////////////////////////////////
41 // errors on client side 42 // errors on client side
42 res[400]="CALL_REQUEST: wrong id (%1)"; 43 res[400]="CALL_REQUEST: wrong id (%1)";
43 res[401]="CALL_REQUEST: wrong port number (%1)"; 44 res[401]="CALL_REQUEST: wrong port number (%1)";
44 res[404]="CALL_REQUEST: wrong signal name (%1)"; 45 res[404]="CALL_REQUEST: wrong signal name (%1)";
45 - res[407]="CALL_REQUEST: network error (while connecting): '%1'"; 46 + res[407]="CALL_REQUEST: error while connecting: '%1'";
46 - res[408]="CALL_REQUEST: network error (while reading frame): '%1'"; 47 + res[408]="CALL_REQUEST: error while reading frame: '%1'";
47 - res[409]="CALL_REQUEST: network error (while writing frame): '%1'"; 48 + res[409]="CALL_REQUEST: error while writing frame: '%1'";
48 49
50 + // there is a problem with this part of the protocol.
49 res[405]="IFACE_REQUEST: time out with error '%1'"; 51 res[405]="IFACE_REQUEST: time out with error '%1'";
50 - res[409]="IFACE_REQUEST: network error (while writing frame): '%1'"; 52 + res[409]="IFACE_REQUEST: error while writing frame: '%1'";
51 53
52 res[413]="CONNECT_REQUEST: wrong destination (%1)"; 54 res[413]="CONNECT_REQUEST: wrong destination (%1)";
53 res[414]="CONNECT_REQUEST: wrong port number (%1)"; 55 res[414]="CONNECT_REQUEST: wrong port number (%1)";
54 res[415]="CONNECT_REQUEST: wrong slot name (%1)"; 56 res[415]="CONNECT_REQUEST: wrong slot name (%1)";
55 - res[417]="CONNECT_REQUEST: network error (while connecting): '%1'"; 57 + res[417]="CONNECT_REQUEST: error while connecting: '%1'";
56 - res[418]="CONNECT_REQUEST: network error (while reading frame): '%1'"; 58 + res[418]="CONNECT_REQUEST: error while reading frame: '%1'";
57 - res[419]="CONNECT_REQUEST: network error (while writing frame): '%1'"; 59 + res[419]="CONNECT_REQUEST: error while writing frame: '%1'";
58 60
59 res[424]="DISCONNECT_REQUEST: wrong source name (%1)"; 61 res[424]="DISCONNECT_REQUEST: wrong source name (%1)";
60 - res[427]="DISCONNECT_REQUEST: network error (while connecting): '%1'"; 62 + res[427]="DISCONNECT_REQUEST: error while connecting: '%1'";
61 - res[429]="DISCONNECT_REQUEST: network error (while writing frame): '%1'"; 63 + res[429]="DISCONNECT_REQUEST: error while writing frame: '%1'";
62 64
63 res[435]="SLOT_REQUEST: wrong slot name (%1)"; 65 res[435]="SLOT_REQUEST: wrong slot name (%1)";
64 - res[437]="SLOT_REQUEST: network error (while connecting): '%1'"; 66 + res[437]="SLOT_REQUEST: error while connecting: '%1'";
65 - res[438]="SLOT_REQUEST: network error (while reading frame): '%1'"; 67 + res[438]="SLOT_REQUEST: error while reading frame: '%1'";
66 - res[439]="SLOT_REQUEST: network error (while writing frame): '%1'"; 68 + res[439]="SLOT_REQUEST: error while writing frame: '%1'";
67 69
68 res[440]="SIGNAL_REQUEST: wrong id (%1)"; 70 res[440]="SIGNAL_REQUEST: wrong id (%1)";
69 res[441]="SIGNAL_REQUEST: wrong port number (%1)"; 71 res[441]="SIGNAL_REQUEST: wrong port number (%1)";
70 res[444]="SIGNAL_REQUEST: wrong signal name (%1)"; 72 res[444]="SIGNAL_REQUEST: wrong signal name (%1)";
71 - res[447]="SIGNAL_REQUEST: network error (while connecting): '%1'"; 73 + res[447]="SIGNAL_REQUEST: error while connecting: '%1'";
72 - // classification hasardeuse 74 + res[449]="SIGNAL_REQUEST: error while writing frame: '%1'";
73 - res[449]="SIGNAL_REQUEST: network error (while writing frame): '%1'";
74 75
75 res[467]="IFACE_RESPONSE: received invalid response"; 76 res[467]="IFACE_RESPONSE: received invalid response";
76 - res[468]="IFACE_RESPONSE: network error (while reading frame): '%1'"; 77 + res[468]="IFACE_RESPONSE: error while reading frame: '%1'";
77 78
78 res[486]="SLOT_RESPONSE: received invalid response"; 79 res[486]="SLOT_RESPONSE: received invalid response";
79 - res[488]="SLOT_RESPONSE: network error (while reading frame): '%1'"; 80 + res[488]="SLOT_RESPONSE: error while reading frame: '%1'";
80 81
81 82
82 /////////////////////////////////////////////////////////////////////////// 83 ///////////////////////////////////////////////////////////////////////////
83 // errors on server side 84 // errors on server side
84 - res[554]="INTERFACE_RESPONSE: wrong signal name (%1)"; //? 85 + //res[554]="IFACE_RESPONSE: wrong signal name (%1)"; //?
85 - res[555]="INTERFACE_RESPONSE: wrong slot name (%1)"; //? 86 + //res[555]="IFACE_RESPONSE: wrong slot name (%1)"; //?
87 + res[569]="IFACE_RESPONSE: error while writing frame: '%1'";
86 88
87 - res[560]="ACK_RESPONSE: wrong id (%1)"; 89 + //res[560]="ACK_RESPONSE: wrong id (%1)";
88 - res[564]="ACK_RESPONSE: wrong signal name (%1)"; 90 + //res[564]="ACK_RESPONSE: wrong signal name (%1)";
89 - 91 + res[559]="ACK_RESPONSE: error while writing frame: '%1'";
90 - res[570]="CONNECT_RESPONSE: wrong id (%1)";
91 92
92 res[585]="SLOT_RESPONSE: wrong slot name (%1)"; 93 res[585]="SLOT_RESPONSE: wrong slot name (%1)";
94 + res[589]="SLOT_RESPONSE: error while writing frame: '%1'";
93 95
94 return res; 96 return res;
95 } 97 }
...@@ -119,16 +121,12 @@ void ARCSNetworkFrame::setType(ARCSNetworkFrames t) ...@@ -119,16 +121,12 @@ void ARCSNetworkFrame::setType(ARCSNetworkFrames t)
119 case DISCONNECT_REQUEST: 121 case DISCONNECT_REQUEST:
120 data = new ARCSNetworkDisconnectRequest(); 122 data = new ARCSNetworkDisconnectRequest();
121 break; 123 break;
122 - case CONNECT_RESPONSE:
123 - data = new ARCSNetworkConnectResponse();
124 - break;
125 case CALL_REQUEST: 124 case CALL_REQUEST:
126 data = new ARCSNetworkCallRequest(); 125 data = new ARCSNetworkCallRequest();
127 break; 126 break;
128 case ACK_RESPONSE: 127 case ACK_RESPONSE:
129 data = new ARCSNetworkAckResponse(); //nouvelle trame 128 data = new ARCSNetworkAckResponse(); //nouvelle trame
130 break; 129 break;
131 -
132 case SLOT_REQUEST: 130 case SLOT_REQUEST:
133 data = new ARCSNetworkSlotRequest(); 131 data = new ARCSNetworkSlotRequest();
134 break; 132 break;
...@@ -138,6 +136,9 @@ void ARCSNetworkFrame::setType(ARCSNetworkFrames t) ...@@ -138,6 +136,9 @@ void ARCSNetworkFrame::setType(ARCSNetworkFrames t)
138 case SLOT_RESPONSE: 136 case SLOT_RESPONSE:
139 data = new ARCSNetworkSlotResponse(); // nouvelle trame 137 data = new ARCSNetworkSlotResponse(); // nouvelle trame
140 break; 138 break;
139 + case ERR_RESPONSE:
140 + data = new ARCSNetworkErrResponse();
141 + break;
141 default: 142 default:
142 type = INVALID; 143 type = INVALID;
143 data = 0 ; 144 data = 0 ;
......
This diff is collapsed. Click to expand it.
...@@ -8,76 +8,76 @@ ...@@ -8,76 +8,76 @@
8 8
9 ARCSNetworkProxySlot::ARCSNetworkProxySlot(ARCSAbstractComponent* cmp, QObject* parent) : QObject(parent) 9 ARCSNetworkProxySlot::ARCSNetworkProxySlot(ARCSAbstractComponent* cmp, QObject* parent) : QObject(parent)
10 { 10 {
11 - slotId = -1; 11 + slotId = -1;
12 - home = cmp; 12 + home = cmp;
13 } 13 }
14 14
15 15
16 16
17 int ARCSNetworkProxySlot::qt_metacall(QMetaObject::Call call,int id, void** arguments) 17 int ARCSNetworkProxySlot::qt_metacall(QMetaObject::Call call,int id, void** arguments)
18 { 18 {
19 - // should implement a call here ! 19 + // should implement a call here !
20 - id = QObject::qt_metacall(call,id, arguments); 20 + id = QObject::qt_metacall(call,id, arguments);
21 - if (id < 0 || call != QMetaObject::InvokeMetaMethod) 21 + if (id < 0 || call != QMetaObject::InvokeMetaMethod)
22 - return id; 22 + return id;
23 - 23 +
24 - if (id != 0) 24 + if (id != 0)
25 - return -1; 25 + return -1;
26 - 26 +
27 - if (slotId == -1) 27 + if (slotId == -1)
28 - return -1; 28 + return -1;
29 - 29 +
30 - QStringList request; 30 + QStringList request;
31 - for (int i =0; i < typeIds.count(); i++) 31 + for (int i =0; i < typeIds.count(); i++)
32 - { 32 + {
33 - int it = typeIds[i]; 33 + int it = typeIds[i];
34 - 34 +
35 - if (it != QMetaType::Void) 35 + if (it != QMetaType::Void)
36 - { 36 + {
37 - QVariant v(it, arguments[i+1]); 37 + QVariant v(it, arguments[i+1]);
38 - request << ARCSFactory::getInstance()->dataSerialize(v); 38 + request << ARCSFactory::getInstance()->dataSerialize(v);
39 - } 39 + }
40 - } 40 + }
41 - 41 +
42 - // call here slot with all its params. 42 + // call here slot with all its params.
43 - QSharedPointer<QTcpSocket> socket(new QTcpSocket(this)); 43 + QSharedPointer<QTcpSocket> socket(new QTcpSocket(this));
44 - socket->connectToHost(hostName, port); 44 + socket->connectToHost(hostName, port);
45 - if (!socket->waitForConnected(ARCSNetworkFrame::TimeOut)) 45 + if (!socket->waitForConnected(ARCSNetworkFrame::TimeOut))
46 - { 46 + {
47 - ARCS::Network::logError(407,socket->errorString()); 47 + ARCS::Network::logError(407,socket->errorString());
48 - /* std::cerr << "Erreur 408: params are " << qPrintable(hostName) << ": " << port 48 + /* std::cerr << "Erreur 408: params are " << qPrintable(hostName) << ": " << port
49 << " (" << this << ")" << std::endl;*/ 49 << " (" << this << ")" << std::endl;*/
50 - return -1; 50 + return -1;
51 - } 51 + }
52 - // cration de la frame 52 + // cration de la frame
53 - ARCSNetworkFrame frameRequest(ARCSNetworkFrame::CALL_REQUEST); 53 + ARCSNetworkFrame frameRequest(ARCSNetworkFrame::CALL_REQUEST);
54 - ((ARCSNetworkCallRequest*)frameRequest.getData())->setParams(slotId, request); 54 + ((ARCSNetworkCallRequest*)frameRequest.getData())->setParams(slotId, request);
55 - 55 +
56 - if( !frameRequest.writeFrame(socket.data())) 56 + if( !frameRequest.writeFrame(socket.data()))
57 - { 57 + {
58 - ARCS::Network::logError(409,socket->errorString()); 58 + ARCS::Network::logError(409,socket->errorString());
59 - return -1; 59 + return -1;
60 - } 60 + }
61 - 61 +
62 - ARCSNetworkFrame* response = ARCSNetworkFrame::readFrame(socket.data()); 62 + ARCSNetworkFrame* response = ARCSNetworkFrame::readFrame(socket.data());
63 - 63 +
64 - //! \todo handle response appropriately 64 + //! \todo handle response appropriately
65 - // traitement de response -> Non c'est juste pour attendre de manire bloquante ! 65 + // traitement de response -> Non c'est juste pour attendre de manire bloquante !
66 - if (response) 66 + if (response)
67 - delete response; 67 + delete response;
68 - return -1; 68 + return -1;
69 } 69 }
70 70
71 71
72 void ARCSNetworkProxySlot::setSlot(QString s) 72 void ARCSNetworkProxySlot::setSlot(QString s)
73 { 73 {
74 - QStringList paramTypes = s.section("(",1,1).section(")", 0,0).split(","); 74 + QStringList paramTypes = s.section("(",1,1).section(")", 0,0).split(",");
75 - typeIds.clear(); 75 + typeIds.clear();
76 76
77 - for (int i=0; i < paramTypes.count(); i++) 77 + for (int i=0; i < paramTypes.count(); i++)
78 - typeIds.append(QMetaType::type(qPrintable(paramTypes.at(i)))); 78 + typeIds.append(QMetaType::type(qPrintable(paramTypes.at(i))));
79 79
80 - slotName = s; 80 + slotName = s;
81 } 81 }
82 82
83 83
...@@ -85,19 +85,19 @@ void ARCSNetworkProxySlot::setSlot(QString s) ...@@ -85,19 +85,19 @@ void ARCSNetworkProxySlot::setSlot(QString s)
85 85
86 int ARCSNetworkProxySlot::prepareSlotConnect(QString , QString sltName, QString , QString , bool simulate) 86 int ARCSNetworkProxySlot::prepareSlotConnect(QString , QString sltName, QString , QString , bool simulate)
87 { 87 {
88 - if (simulate) 88 + if (simulate)
89 - return 0; 89 + return 0;
90 - 90 +
91 - ARCSNetworkComponent* anc = dynamic_cast<ARCSNetworkComponent*>(home); 91 + ARCSNetworkComponent* anc = dynamic_cast<ARCSNetworkComponent*>(home);
92 - if (anc) 92 + if (anc)
93 - anc->requestSlotConnect(this); 93 + anc->requestSlotConnect(this);
94 - //! \todo insrer ici un traitement appropri 94 + //! \todo insrer ici un traitement appropri
95 - 95 +
96 - if (metaObject()->indexOfSlot(qPrintable(sltName)) != -1) 96 + if (metaObject()->indexOfSlot(qPrintable(sltName)) != -1)
97 - { 97 + {
98 - return metaObject()->indexOfSlot(qPrintable(sltName)); 98 + return metaObject()->indexOfSlot(qPrintable(sltName));
99 - } 99 + }
100 - return metaObject()->methodCount(); 100 + return metaObject()->methodCount();
101 } 101 }
102 102
103 103
......
This diff is collapsed. Click to expand it.