Mercurial > hg > piper-cpp
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 |