Mercurial > hg > piper-cpp
comparison utilities/vampipe-convert.cpp @ 52:e90fd30990eb
Error handling, and pass plugin handles through
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Fri, 16 Sep 2016 16:20:05 +0100 |
parents | f4244a2d55ac |
children | 9bebe2780cc0 |
comparison
equal
deleted
inserted
replaced
51:f4244a2d55ac | 52:e90fd30990eb |
---|---|
170 Json j = convertResponseJson(input); | 170 Json j = convertResponseJson(input); |
171 | 171 |
172 rr.type = VampJson::getRequestResponseType(j); | 172 rr.type = VampJson::getRequestResponseType(j); |
173 VampJson::BufferSerialisation serialisation = VampJson::BufferSerialisation::Text; | 173 VampJson::BufferSerialisation serialisation = VampJson::BufferSerialisation::Text; |
174 | 174 |
175 rr.success = j["success"].bool_value(); | |
176 rr.errorText = j["errorText"].string_value(); | |
177 | |
175 switch (rr.type) { | 178 switch (rr.type) { |
176 | 179 |
177 case RRType::List: | 180 case RRType::List: |
178 rr.listResponse = VampJson::toVampResponse_List(j); | 181 rr.listResponse = VampJson::toVampResponse_List(j); |
179 break; | 182 break; |
199 void | 202 void |
200 writeResponseJson(RequestOrResponse &rr, bool useBase64) | 203 writeResponseJson(RequestOrResponse &rr, bool useBase64) |
201 { | 204 { |
202 Json j; | 205 Json j; |
203 | 206 |
204 switch (rr.type) { | 207 if (!rr.success) { |
205 | 208 |
206 case RRType::List: | 209 j = VampJson::fromError(rr.errorText, rr.type); |
207 j = VampJson::fromVampResponse_List("", rr.listResponse); | 210 |
208 break; | 211 } else { |
209 case RRType::Load: | 212 |
210 j = VampJson::fromVampResponse_Load(rr.loadResponse, mapper); | 213 switch (rr.type) { |
211 break; | 214 |
212 case RRType::Configure: | 215 case RRType::List: |
213 j = VampJson::fromVampResponse_Configure(rr.configurationResponse); | 216 j = VampJson::fromVampResponse_List("", rr.listResponse); |
214 break; | 217 break; |
215 case RRType::Process: | 218 case RRType::Load: |
216 j = VampJson::fromVampResponse_Process | 219 j = VampJson::fromVampResponse_Load(rr.loadResponse, mapper); |
217 (rr.processResponse, | 220 break; |
218 mapper, | 221 case RRType::Configure: |
219 useBase64 ? | 222 j = VampJson::fromVampResponse_Configure(rr.configurationResponse); |
220 VampJson::BufferSerialisation::Base64 : | 223 break; |
221 VampJson::BufferSerialisation::Text); | 224 case RRType::Process: |
222 break; | 225 j = VampJson::fromVampResponse_Process |
223 case RRType::Finish: | 226 (rr.processResponse, |
224 j = VampJson::fromVampResponse_Finish | 227 mapper, |
225 (rr.finishResponse, | 228 useBase64 ? |
226 mapper, | 229 VampJson::BufferSerialisation::Base64 : |
227 useBase64 ? | 230 VampJson::BufferSerialisation::Text); |
228 VampJson::BufferSerialisation::Base64 : | 231 break; |
229 VampJson::BufferSerialisation::Text); | 232 case RRType::Finish: |
230 break; | 233 j = VampJson::fromVampResponse_Finish |
231 case RRType::NotValid: | 234 (rr.finishResponse, |
232 break; | 235 mapper, |
233 } | 236 useBase64 ? |
234 | 237 VampJson::BufferSerialisation::Base64 : |
238 VampJson::BufferSerialisation::Text); | |
239 break; | |
240 case RRType::NotValid: | |
241 break; | |
242 } | |
243 } | |
244 | |
235 cout << j.dump() << endl; | 245 cout << j.dump() << endl; |
236 } | 246 } |
237 | 247 |
238 RequestOrResponse | 248 RequestOrResponse |
239 readRequestCapnp(kj::BufferedInputStreamWrapper &buffered) | 249 readRequestCapnp(kj::BufferedInputStreamWrapper &buffered) |
310 | 320 |
311 ::capnp::InputStreamMessageReader message(buffered); | 321 ::capnp::InputStreamMessageReader message(buffered); |
312 VampResponse::Reader reader = message.getRoot<VampResponse>(); | 322 VampResponse::Reader reader = message.getRoot<VampResponse>(); |
313 | 323 |
314 rr.type = VampnProto::getRequestResponseType(reader); | 324 rr.type = VampnProto::getRequestResponseType(reader); |
325 rr.success = reader.getSuccess(); | |
326 rr.errorText = reader.getErrorText(); | |
315 | 327 |
316 switch (rr.type) { | 328 switch (rr.type) { |
317 | 329 |
318 case RRType::List: | 330 case RRType::List: |
319 VampnProto::readVampResponse_List(rr.listResponse, reader); | 331 VampnProto::readVampResponse_List(rr.listResponse, reader); |
342 writeResponseCapnp(RequestOrResponse &rr) | 354 writeResponseCapnp(RequestOrResponse &rr) |
343 { | 355 { |
344 ::capnp::MallocMessageBuilder message; | 356 ::capnp::MallocMessageBuilder message; |
345 VampResponse::Builder builder = message.initRoot<VampResponse>(); | 357 VampResponse::Builder builder = message.initRoot<VampResponse>(); |
346 | 358 |
347 switch (rr.type) { | 359 if (!rr.success) { |
348 | 360 |
349 case RRType::List: | 361 VampnProto::buildVampResponse_Error(builder, rr.errorText, rr.type); |
350 VampnProto::buildVampResponse_List(builder, "", rr.listResponse); | 362 |
351 break; | 363 } else { |
352 case RRType::Load: | 364 |
353 VampnProto::buildVampResponse_Load(builder, rr.loadResponse, mapper); | 365 switch (rr.type) { |
354 break; | 366 |
355 case RRType::Configure: | 367 case RRType::List: |
356 VampnProto::buildVampResponse_Configure(builder, rr.configurationResponse); | 368 VampnProto::buildVampResponse_List(builder, "", rr.listResponse); |
357 break; | 369 break; |
358 case RRType::Process: | 370 case RRType::Load: |
359 VampnProto::buildVampResponse_Process(builder, rr.processResponse, mapper); | 371 VampnProto::buildVampResponse_Load(builder, rr.loadResponse, mapper); |
360 break; | 372 break; |
361 case RRType::Finish: | 373 case RRType::Configure: |
362 VampnProto::buildVampResponse_Finish(builder, rr.finishResponse, mapper); | 374 VampnProto::buildVampResponse_Configure(builder, rr.configurationResponse); |
363 break; | 375 break; |
364 case RRType::NotValid: | 376 case RRType::Process: |
365 break; | 377 VampnProto::buildVampResponse_Process(builder, rr.processResponse, mapper); |
366 } | 378 break; |
367 | 379 case RRType::Finish: |
380 VampnProto::buildVampResponse_Finish(builder, rr.finishResponse, mapper); | |
381 break; | |
382 case RRType::NotValid: | |
383 break; | |
384 } | |
385 } | |
386 | |
368 writeMessageToFd(1, message); | 387 writeMessageToFd(1, message); |
369 } | 388 } |
370 | 389 |
371 RequestOrResponse | 390 RequestOrResponse |
372 readInputJson(RequestOrResponse::Direction direction) | 391 readInputJson(RequestOrResponse::Direction direction) |
483 if (rr.type == RRType::NotValid) break; | 502 if (rr.type == RRType::NotValid) break; |
484 | 503 |
485 writeOutput(outformat, rr); | 504 writeOutput(outformat, rr); |
486 | 505 |
487 } catch (std::exception &e) { | 506 } catch (std::exception &e) { |
507 | |
488 cerr << "Error: " << e.what() << endl; | 508 cerr << "Error: " << e.what() << endl; |
489 exit(1); | 509 exit(1); |
490 } | 510 } |
491 } | 511 } |
492 | 512 |