From 6f653cc3af583a3c254fdc763a9ca9fdffba476d Mon Sep 17 00:00:00 2001 From: Matej Sekoranja Date: Tue, 9 Oct 2012 10:23:52 +0200 Subject: [PATCH] uri:ev4:nt/2012/pwd name support --- testApp/remote/eget.cpp | 30 ++++++++++-------------------- testApp/remote/testServer.cpp | 32 ++++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/testApp/remote/eget.cpp b/testApp/remote/eget.cpp index 50b08e7..abdf617 100644 --- a/testApp/remote/eget.cpp +++ b/testApp/remote/eget.cpp @@ -329,6 +329,16 @@ NTFormatterLUTMap ntFormatterLUT; void initializeNTFormatterLUT() { + ntFormatterLUT["uri:ev4:nt/2012/pwd:NTScalar"] = formatNTScalar; + ntFormatterLUT["uri:ev4:nt/2012/pwd:NTScalarArray"] = formatNTScalarArray; + ntFormatterLUT["uri:ev4:nt/2012/pwd:NTTable"] = formatNTTable; + ntFormatterLUT["uri:ev4:nt/2012/pwd:NTMatrix"] = formatNTMatrix; + ntFormatterLUT["uri:ev4:nt/2012/pwd:NTAny"] = formatNTAny; + + // + // TODO remove: smooth transition + // + ntFormatterLUT["NTScalar"] = formatNTScalar; ntFormatterLUT["NTScalarArray"] = formatNTScalarArray; ntFormatterLUT["NTTable"] = formatNTTable; @@ -904,26 +914,6 @@ int main (int argc, char *argv[]) return 1; } - /* - int i = 0; - StringArray fieldNames(parameters.size()); - FieldConstPtrArray fields(parameters.size()); - for (vector< pair >::iterator iter = parameters.begin(); - iter != parameters.end(); - iter++, i++) - { - fieldNames[i] = iter->first; - fields[i] = getFieldCreate()->createScalar(pvString); - } - PVStructure::shared_pointer args( - new PVStructure(getFieldCreate()->createStructure(fieldNames, fields))); - for (vector< pair >::iterator iter = parameters.begin(); - iter != parameters.end(); - iter++) - { - args->getStringField(iter->first)->put(iter->second); - } - */ StringArray queryFieldNames; FieldConstPtrArray queryFields; diff --git a/testApp/remote/testServer.cpp b/testApp/remote/testServer.cpp index 869a03b..a24f3db 100644 --- a/testApp/remote/testServer.cpp +++ b/testApp/remote/testServer.cpp @@ -402,8 +402,14 @@ class MockChannelRPC : public ChannelRPC { if (m_channelName == "rpcNTTable") { + PVStructure::shared_pointer args( + (pvArgument->getStructure()->getID() == "uri:ev4:nt/2012/pwd:NTURI") ? + pvArgument->getStructureField("query") : + pvArgument + ); + // TODO type check, getStringField is verbose - PVStringPtr columns = static_pointer_cast(pvArgument->getSubField("columns")); + PVStringPtr columns = static_pointer_cast(args->getSubField("columns")); if (columns.get() == 0) { PVStructure::shared_pointer nullPtr; @@ -429,9 +435,10 @@ class MockChannelRPC : public ChannelRPC } PVStructure::shared_pointer result( - new PVStructure(getFieldCreate()->createStructure("NTTable", fieldNames, fields))); - - //result->getStringField("normativeType")->put("NTTable"); + getPVDataCreate()->createPVStructure( + getFieldCreate()->createStructure("uri:ev4:nt/2012/pwd:NTTable", fieldNames, fields) + ) + ); static_pointer_cast(result->getScalarArrayField("labels", pvString))->put(0, labels.size(), &labels[0], 0); srand ( time(NULL) ); @@ -454,9 +461,15 @@ class MockChannelRPC : public ChannelRPC } else if (m_channelName == "rpcNTMatrix") { - // TODO type check, getStringField is verbose - PVStringPtr rows = static_pointer_cast(pvArgument->getSubField("rows")); - PVStringPtr columns = static_pointer_cast(pvArgument->getSubField("columns")); + PVStructure::shared_pointer args( + (pvArgument->getStructure()->getID() == "uri:ev4:nt/2012/pwd:NTURI") ? + pvArgument->getStructureField("query") : + pvArgument + ); + + // TODO type check, getStringField is verbose + PVStringPtr rows = static_pointer_cast(args->getSubField("rows")); + PVStringPtr columns = static_pointer_cast(args->getSubField("columns")); if (rows.get() == 0 || columns.get() == 0) { PVStructure::shared_pointer nullPtr; @@ -475,7 +488,10 @@ class MockChannelRPC : public ChannelRPC fields[i++] = getFieldCreate()->createScalarArray(pvInt); PVStructure::shared_pointer result( - new PVStructure(getFieldCreate()->createStructure("NTMatrix", fieldNames, fields))); + getPVDataCreate()->createPVStructure( + getFieldCreate()->createStructure("uri:ev4:nt/2012/pwd:NTMatrix", fieldNames, fields) + ) + ); int32 rowsVal = atoi(rows->get().c_str()); int32 colsVal = atoi(columns->get().c_str());