Mercurial > hg > piper-cpp
diff utilities/vampipe-convert.cpp @ 25:5b9690d18241
Pull up type determination into VampJson
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Tue, 24 May 2016 10:43:34 +0100 |
parents | 533ca5ca3404 |
children | cc85c2851605 |
line wrap: on
line diff
--- a/utilities/vampipe-convert.cpp Mon May 23 16:09:25 2016 +0100 +++ b/utilities/vampipe-convert.cpp Tue May 24 10:43:34 2016 +0100 @@ -62,31 +62,15 @@ enum Direction { Request, Response }; - enum Type { - List, Load, Configure, Process, Finish, Eof - }; - - static Type typeForName(string name) { - if (name == "list") return List; - else if (name == "load") return Load; - else if (name == "configure") return Configure; - else if (name == "process") return Process; - else if (name == "finish") return Finish; - else if (name == "eof") return Eof; - else { - throw runtime_error("unknown or unexpected request/response type \"" + - name + "\""); - } - } RequestOrResponse() : // nothing by default direction(Request), - type(Eof), + type(RRType::NotValid), success(false), finishPlugin(0) { } Direction direction; - Type type; + RRType type; bool success; string errorText; @@ -151,24 +135,23 @@ string input; if (!getline(cin, input)) { - rr.type = RequestOrResponse::Eof; + rr.type = RRType::NotValid; return rr; } Json j = convertRequestJson(input); - string type = j["type"].string_value(); - rr.type = RequestOrResponse::typeForName(type); + rr.type = VampJson::getRequestResponseType(j); - if (rr.type == RequestOrResponse::Load) { + if (rr.type == RRType::Load) { rr.loadRequest = VampJson::toVampRequest_Load(j); - } else if (rr.type == RequestOrResponse::Configure) { + } else if (rr.type == RRType::Configure) { rr.configurationRequest = VampJson::toVampRequest_Configure(j, rr.mapper); - } else if (rr.type == RequestOrResponse::Process) { + } else if (rr.type == RRType::Process) { rr.processRequest = VampJson::toVampRequest_Process(j, rr.mapper); - } else if (rr.type == RequestOrResponse::Finish) { + } else if (rr.type == RRType::Finish) { rr.finishPlugin = VampJson::toVampRequest_Finish(j, rr.mapper); } @@ -180,19 +163,19 @@ { Json j; - if (rr.type == RequestOrResponse::List) { + if (rr.type == RRType::List) { j = VampJson::fromVampRequest_List(); - } else if (rr.type == RequestOrResponse::Load) { + } else if (rr.type == RRType::Load) { j = VampJson::fromVampRequest_Load(rr.loadRequest); - } else if (rr.type == RequestOrResponse::Configure) { + } else if (rr.type == RRType::Configure) { j = VampJson::fromVampRequest_Configure(rr.configurationRequest, rr.mapper); - } else if (rr.type == RequestOrResponse::Process) { + } else if (rr.type == RRType::Process) { j = VampJson::fromVampRequest_Process(rr.processRequest, rr.mapper); - } else if (rr.type == RequestOrResponse::Finish) { + } else if (rr.type == RRType::Finish) { j = VampJson::fromVampRequest_Finish(rr.finishPlugin, rr.mapper); } @@ -207,27 +190,26 @@ string input; if (!getline(cin, input)) { - rr.type = RequestOrResponse::Eof; + rr.type = RRType::NotValid; return rr; } Json j = convertResponseJson(input); - string type = j["type"].string_value(); - rr.type = RequestOrResponse::typeForName(type); + rr.type = VampJson::getRequestResponseType(j); - if (rr.type == RequestOrResponse::List) { + if (rr.type == RRType::List) { rr.listResponse = VampJson::toVampResponse_List(j); - } else if (rr.type == RequestOrResponse::Load) { + } else if (rr.type == RRType::Load) { rr.loadResponse = VampJson::toVampResponse_Load(j, rr.mapper); - } else if (rr.type == RequestOrResponse::Configure) { + } else if (rr.type == RRType::Configure) { rr.configurationResponse = VampJson::toVampResponse_Configure(j); - } else if (rr.type == RequestOrResponse::Process) { + } else if (rr.type == RRType::Process) { rr.processResponse = VampJson::toVampResponse_Process(j); - } else if (rr.type == RequestOrResponse::Finish) { + } else if (rr.type == RRType::Finish) { rr.finishResponse = VampJson::toVampResponse_Finish(j); } @@ -239,13 +221,15 @@ { Json j; - if (rr.type == RequestOrResponse::List) { + if (rr.type == RRType::List) { j = VampJson::fromVampResponse_List("", rr.listResponse); - } else if (rr.type == RequestOrResponse::Load) { + } else if (rr.type == RRType::Load) { j = VampJson::fromVampResponse_Load(rr.loadResponse, rr.mapper); } + //!!! + cout << j.dump() << endl; } @@ -322,7 +306,7 @@ try { RequestOrResponse rr = readInput(informat, direction); - if (rr.type == RequestOrResponse::Eof) break; + if (rr.type == RRType::NotValid) break; writeOutput(outformat, rr); } catch (std::exception &e) {