comparison utilities/vampipe-convert.cpp @ 58:c38e12d4bbdd

Merge from branch outputid-string-in-featureset
author Chris Cannam <c.cannam@qmul.ac.uk>
date Mon, 19 Sep 2016 14:48:43 +0100
parents 815e94fedc1c
children 77833938f0f8
comparison
equal deleted inserted replaced
48:ce6cb3308bd7 58:c38e12d4bbdd
111 break; 111 break;
112 case RRType::Process: 112 case RRType::Process:
113 rr.processRequest = VampJson::toVampRequest_Process(j, mapper, serialisation); 113 rr.processRequest = VampJson::toVampRequest_Process(j, mapper, serialisation);
114 break; 114 break;
115 case RRType::Finish: 115 case RRType::Finish:
116 rr.finishPlugin = VampJson::toVampRequest_Finish(j, mapper); 116 rr.finishRequest = VampJson::toVampRequest_Finish(j, mapper);
117 break; 117 break;
118 case RRType::NotValid: 118 case RRType::NotValid:
119 break; 119 break;
120 } 120 }
121 121
125 void 125 void
126 writeRequestJson(RequestOrResponse &rr, bool useBase64) 126 writeRequestJson(RequestOrResponse &rr, bool useBase64)
127 { 127 {
128 Json j; 128 Json j;
129 129
130 VampJson::BufferSerialisation serialisation =
131 (useBase64 ?
132 VampJson::BufferSerialisation::Base64 :
133 VampJson::BufferSerialisation::Text);
134
130 switch (rr.type) { 135 switch (rr.type) {
131 136
132 case RRType::List: 137 case RRType::List:
133 j = VampJson::fromVampRequest_List(); 138 j = VampJson::fromVampRequest_List();
134 break; 139 break;
138 case RRType::Configure: 143 case RRType::Configure:
139 j = VampJson::fromVampRequest_Configure(rr.configurationRequest, mapper); 144 j = VampJson::fromVampRequest_Configure(rr.configurationRequest, mapper);
140 break; 145 break;
141 case RRType::Process: 146 case RRType::Process:
142 j = VampJson::fromVampRequest_Process 147 j = VampJson::fromVampRequest_Process
143 (rr.processRequest, mapper, 148 (rr.processRequest, mapper, serialisation);
144 useBase64 ?
145 VampJson::BufferSerialisation::Base64 :
146 VampJson::BufferSerialisation::Text);
147 break; 149 break;
148 case RRType::Finish: 150 case RRType::Finish:
149 j = VampJson::fromVampRequest_Finish(rr.finishPlugin, mapper); 151 j = VampJson::fromVampRequest_Finish(rr.finishRequest, mapper);
150 break; 152 break;
151 case RRType::NotValid: 153 case RRType::NotValid:
152 break; 154 break;
153 } 155 }
154 156
170 Json j = convertResponseJson(input); 172 Json j = convertResponseJson(input);
171 173
172 rr.type = VampJson::getRequestResponseType(j); 174 rr.type = VampJson::getRequestResponseType(j);
173 VampJson::BufferSerialisation serialisation = VampJson::BufferSerialisation::Text; 175 VampJson::BufferSerialisation serialisation = VampJson::BufferSerialisation::Text;
174 176
177 rr.success = j["success"].bool_value();
178 rr.errorText = j["errorText"].string_value();
179
175 switch (rr.type) { 180 switch (rr.type) {
176 181
177 case RRType::List: 182 case RRType::List:
178 rr.listResponse = VampJson::toVampResponse_List(j); 183 rr.listResponse = VampJson::toVampResponse_List(j);
179 break; 184 break;
180 case RRType::Load: 185 case RRType::Load:
181 rr.loadResponse = VampJson::toVampResponse_Load(j, mapper); 186 rr.loadResponse = VampJson::toVampResponse_Load(j, mapper);
182 break; 187 break;
183 case RRType::Configure: 188 case RRType::Configure:
184 rr.configurationResponse = VampJson::toVampResponse_Configure(j); 189 rr.configurationResponse = VampJson::toVampResponse_Configure(j, mapper);
185 break; 190 break;
186 case RRType::Process: 191 case RRType::Process:
187 rr.processResponse = VampJson::toVampResponse_Process(j, serialisation); 192 rr.processResponse = VampJson::toVampResponse_Process(j, mapper, serialisation);
188 break; 193 break;
189 case RRType::Finish: 194 case RRType::Finish:
190 rr.finishResponse = VampJson::toVampResponse_Finish(j, serialisation); 195 rr.finishResponse = VampJson::toVampResponse_Finish(j, mapper, serialisation);
191 break; 196 break;
192 case RRType::NotValid: 197 case RRType::NotValid:
193 break; 198 break;
194 } 199 }
195 200
199 void 204 void
200 writeResponseJson(RequestOrResponse &rr, bool useBase64) 205 writeResponseJson(RequestOrResponse &rr, bool useBase64)
201 { 206 {
202 Json j; 207 Json j;
203 208
204 switch (rr.type) { 209 VampJson::BufferSerialisation serialisation =
205 210 (useBase64 ?
206 case RRType::List: 211 VampJson::BufferSerialisation::Base64 :
207 j = VampJson::fromVampResponse_List("", rr.listResponse); 212 VampJson::BufferSerialisation::Text);
208 break; 213
209 case RRType::Load: 214 if (!rr.success) {
210 j = VampJson::fromVampResponse_Load(rr.loadResponse, mapper); 215
211 break; 216 j = VampJson::fromError(rr.errorText, rr.type);
212 case RRType::Configure: 217
213 j = VampJson::fromVampResponse_Configure(rr.configurationResponse); 218 } else {
214 break; 219
215 case RRType::Process: 220 switch (rr.type) {
216 j = VampJson::fromVampResponse_Process 221
217 (rr.processResponse, 222 case RRType::List:
218 useBase64 ? 223 j = VampJson::fromVampResponse_List("", rr.listResponse);
219 VampJson::BufferSerialisation::Base64 : 224 break;
220 VampJson::BufferSerialisation::Text); 225 case RRType::Load:
221 break; 226 j = VampJson::fromVampResponse_Load(rr.loadResponse, mapper);
222 case RRType::Finish: 227 break;
223 j = VampJson::fromVampResponse_Finish 228 case RRType::Configure:
224 (rr.finishResponse, 229 j = VampJson::fromVampResponse_Configure(rr.configurationResponse,
225 useBase64 ? 230 mapper);
226 VampJson::BufferSerialisation::Base64 : 231 break;
227 VampJson::BufferSerialisation::Text); 232 case RRType::Process:
228 break; 233 j = VampJson::fromVampResponse_Process
229 case RRType::NotValid: 234 (rr.processResponse, mapper, serialisation);
230 break; 235 break;
231 } 236 case RRType::Finish:
232 237 j = VampJson::fromVampResponse_Finish
238 (rr.finishResponse, mapper, serialisation);
239 break;
240 case RRType::NotValid:
241 break;
242 }
243 }
244
233 cout << j.dump() << endl; 245 cout << j.dump() << endl;
234 } 246 }
235 247
236 RequestOrResponse 248 RequestOrResponse
237 readRequestCapnp(kj::BufferedInputStreamWrapper &buffered) 249 readRequestCapnp(kj::BufferedInputStreamWrapper &buffered)
258 break; 270 break;
259 case RRType::Process: 271 case RRType::Process:
260 VampnProto::readVampRequest_Process(rr.processRequest, reader, mapper); 272 VampnProto::readVampRequest_Process(rr.processRequest, reader, mapper);
261 break; 273 break;
262 case RRType::Finish: 274 case RRType::Finish:
263 VampnProto::readVampRequest_Finish(rr.finishPlugin, reader, mapper); 275 VampnProto::readVampRequest_Finish(rr.finishRequest, reader, mapper);
264 break; 276 break;
265 case RRType::NotValid: 277 case RRType::NotValid:
266 break; 278 break;
267 } 279 }
268 280
289 break; 301 break;
290 case RRType::Process: 302 case RRType::Process:
291 VampnProto::buildVampRequest_Process(builder, rr.processRequest, mapper); 303 VampnProto::buildVampRequest_Process(builder, rr.processRequest, mapper);
292 break; 304 break;
293 case RRType::Finish: 305 case RRType::Finish:
294 VampnProto::buildVampRequest_Finish(builder, rr.finishPlugin, mapper); 306 VampnProto::buildVampRequest_Finish(builder, rr.finishRequest, mapper);
295 break; 307 break;
296 case RRType::NotValid: 308 case RRType::NotValid:
297 break; 309 break;
298 } 310 }
299 311
308 320
309 ::capnp::InputStreamMessageReader message(buffered); 321 ::capnp::InputStreamMessageReader message(buffered);
310 VampResponse::Reader reader = message.getRoot<VampResponse>(); 322 VampResponse::Reader reader = message.getRoot<VampResponse>();
311 323
312 rr.type = VampnProto::getRequestResponseType(reader); 324 rr.type = VampnProto::getRequestResponseType(reader);
325 rr.success = reader.getSuccess();
326 rr.errorText = reader.getErrorText();
313 327
314 switch (rr.type) { 328 switch (rr.type) {
315 329
316 case RRType::List: 330 case RRType::List:
317 VampnProto::readVampResponse_List(rr.listResponse, reader); 331 VampnProto::readVampResponse_List(rr.listResponse, reader);
319 case RRType::Load: 333 case RRType::Load:
320 VampnProto::readVampResponse_Load(rr.loadResponse, reader, mapper); 334 VampnProto::readVampResponse_Load(rr.loadResponse, reader, mapper);
321 break; 335 break;
322 case RRType::Configure: 336 case RRType::Configure:
323 VampnProto::readVampResponse_Configure(rr.configurationResponse, 337 VampnProto::readVampResponse_Configure(rr.configurationResponse,
324 reader); 338 reader, mapper);
325 break; 339 break;
326 case RRType::Process: 340 case RRType::Process:
327 VampnProto::readVampResponse_Process(rr.processResponse, reader); 341 VampnProto::readVampResponse_Process(rr.processResponse, reader, mapper);
328 break; 342 break;
329 case RRType::Finish: 343 case RRType::Finish:
330 VampnProto::readVampResponse_Finish(rr.finishResponse, reader); 344 VampnProto::readVampResponse_Finish(rr.finishResponse, reader, mapper);
331 break; 345 break;
332 case RRType::NotValid: 346 case RRType::NotValid:
333 break; 347 break;
334 } 348 }
335 349
340 writeResponseCapnp(RequestOrResponse &rr) 354 writeResponseCapnp(RequestOrResponse &rr)
341 { 355 {
342 ::capnp::MallocMessageBuilder message; 356 ::capnp::MallocMessageBuilder message;
343 VampResponse::Builder builder = message.initRoot<VampResponse>(); 357 VampResponse::Builder builder = message.initRoot<VampResponse>();
344 358
345 switch (rr.type) { 359 if (!rr.success) {
346 360
347 case RRType::List: 361 VampnProto::buildVampResponse_Error(builder, rr.errorText, rr.type);
348 VampnProto::buildVampResponse_List(builder, "", rr.listResponse); 362
349 break; 363 } else {
350 case RRType::Load: 364
351 VampnProto::buildVampResponse_Load(builder, rr.loadResponse, mapper); 365 switch (rr.type) {
352 break; 366
353 case RRType::Configure: 367 case RRType::List:
354 VampnProto::buildVampResponse_Configure(builder, rr.configurationResponse); 368 VampnProto::buildVampResponse_List(builder, rr.listResponse);
355 break; 369 break;
356 case RRType::Process: 370 case RRType::Load:
357 VampnProto::buildVampResponse_Process(builder, rr.processResponse); 371 VampnProto::buildVampResponse_Load(builder, rr.loadResponse, mapper);
358 break; 372 break;
359 case RRType::Finish: 373 case RRType::Configure:
360 VampnProto::buildVampResponse_Finish(builder, rr.finishResponse); 374 VampnProto::buildVampResponse_Configure(builder, rr.configurationResponse, mapper);
361 break; 375 break;
362 case RRType::NotValid: 376 case RRType::Process:
363 break; 377 VampnProto::buildVampResponse_Process(builder, rr.processResponse, mapper);
364 } 378 break;
365 379 case RRType::Finish:
380 VampnProto::buildVampResponse_Finish(builder, rr.finishResponse, mapper);
381 break;
382 case RRType::NotValid:
383 break;
384 }
385 }
386
366 writeMessageToFd(1, message); 387 writeMessageToFd(1, message);
367 } 388 }
368 389
369 RequestOrResponse 390 RequestOrResponse
370 readInputJson(RequestOrResponse::Direction direction) 391 readInputJson(RequestOrResponse::Direction direction)
481 if (rr.type == RRType::NotValid) break; 502 if (rr.type == RRType::NotValid) break;
482 503
483 writeOutput(outformat, rr); 504 writeOutput(outformat, rr);
484 505
485 } catch (std::exception &e) { 506 } catch (std::exception &e) {
507
486 cerr << "Error: " << e.what() << endl; 508 cerr << "Error: " << e.what() << endl;
487 exit(1); 509 exit(1);
488 } 510 }
489 } 511 }
490 512