178 XQSERVICE_DEBUG_PRINT("XQServiceThreadData::serializeRetData"); |
178 XQSERVICE_DEBUG_PRINT("XQServiceThreadData::serializeRetData"); |
179 XQSERVICE_DEBUG_PRINT("value type: %d, null?=%d, valid?=%d, error: %d", value.type(), value.isNull(), value.isValid(), error); |
179 XQSERVICE_DEBUG_PRINT("value type: %d, null?=%d, valid?=%d, error: %d", value.type(), value.isNull(), value.isValid(), error); |
180 QByteArray array; |
180 QByteArray array; |
181 // if (!value.isNull() && (value.type() != QVariant::Invalid)) { maparnan |
181 // if (!value.isNull() && (value.type() != QVariant::Invalid)) { maparnan |
182 if (value.isValid()) { // |
182 if (value.isValid()) { // |
183 XQServiceVariant retRequest(value); |
183 QDataStream stream(&array, QIODevice::WriteOnly | QIODevice::Append); |
184 QDataStream stream(&array, |
184 |
185 QIODevice::WriteOnly | QIODevice::Append); |
|
186 stream << CmdRetData; |
185 stream << CmdRetData; |
187 //TODO: check if i use type() crash for custom type |
186 stream << value; |
188 stream << retRequest.userType(); |
|
189 retRequest.save(stream); |
|
190 } |
187 } |
191 else { |
188 else { |
192 if (error) |
189 if (error) |
193 { |
190 { |
194 //QVariant value = QVariant::fromValue(error); |
|
195 QVariant value(error); |
191 QVariant value(error); |
196 XQServiceVariant retRequest(value); |
|
197 QDataStream stream(&array, |
192 QDataStream stream(&array, |
198 QIODevice::WriteOnly | QIODevice::Append); |
193 QIODevice::WriteOnly | QIODevice::Append); |
199 stream << CmdErrData; |
194 stream << CmdErrData; |
200 stream << retRequest.userType(); |
195 stream << value; |
201 retRequest.save(stream); |
|
202 } |
196 } |
203 } |
197 } |
204 return array; |
198 return array; |
205 } |
199 } |
206 |
200 |
210 XQSERVICE_DEBUG_PRINT("retData: %s", retData.constData()); |
204 XQSERVICE_DEBUG_PRINT("retData: %s", retData.constData()); |
211 if (retData.length()) |
205 if (retData.length()) |
212 { |
206 { |
213 QDataStream stream(retData); |
207 QDataStream stream(retData); |
214 int cmd ; |
208 int cmd ; |
215 int type ; |
|
216 stream >> cmd ; |
209 stream >> cmd ; |
217 stream >> type ; |
|
218 if (cmd == CmdRetData) |
210 if (cmd == CmdRetData) |
219 { |
211 { |
220 XQServiceVariant retServiceData; |
212 QVariant retServiceData(stream); |
221 retServiceData.load(stream,type); |
|
222 return retServiceData; |
213 return retServiceData; |
223 } |
214 } |
224 else |
215 else |
225 { |
216 { |
226 if (cmd == CmdErrData) |
217 if (cmd == CmdErrData) |
227 { |
218 { |
228 XQServiceVariant retServiceData; |
219 QVariant retServiceData(stream); |
229 retServiceData.load(stream,type); |
|
230 int error = retServiceData.toInt(); |
220 int error = retServiceData.toInt(); |
231 XQService::serviceThreadData()->setLatestError(error); |
221 XQService::serviceThreadData()->setLatestError(error); |
232 } |
222 } |
233 } |
223 } |
234 } |
224 } |