Passage sur le serveur, suppression des fuites mémoire.
Renormalisation des trames. Suppression de la trame CONNECT_RESPONSE, introduction de la trame ERR_RESPONSE.
Showing
5 changed files
with
98 additions
and
97 deletions
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.
-
Please register or login to post a comment