CreateRequest no longer derives from Requester; In responseHandlers all destructors are virtual.

This commit is contained in:
Marty Kraimer
2013-10-31 06:23:33 -04:00
parent 001185070e
commit 530a96746b
10 changed files with 124 additions and 98 deletions

View File

@@ -15,62 +15,46 @@
using namespace epics::pvData;
using namespace epics::pvAccess;
class RequesterImpl : public Requester,
public std::tr1::enable_shared_from_this<RequesterImpl>
{
public:
virtual String getRequesterName()
{
return "RequesterImpl";
};
virtual void message(String const & message,MessageType messageType)
{
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << getMessageTypeName(messageType) << ")" << std::endl;
}
};
void testCreateRequest() {
printf("testCreateRequest... \n");
Requester::shared_pointer requester(new RequesterImpl());
CreateRequest::shared_pointer createRequest = getCreateRequest();
CreateRequest::shared_pointer createRequest = CreateRequest::create();
String out;
String request = "";
std::cout << std::endl << String("request") <<std::endl << request <<std::endl;
epics::pvData::PVStructure::shared_pointer pvRequest = getCreateRequest()->createRequest(request,requester);
std::cout << std::endl << String("request") <<std::endl << request <<std::endl;
PVStructurePtr pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "record[process=true]field(alarm,timeStamp)putField(synput:a,synput:b,stnput:c)";
std::cout << std::endl << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "alarm,timeStamp,power.value";
std::cout << std::endl << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "record[process=true]field(alarm,timeStamp,power.value)";
std::cout << std::endl << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "record[process=true]field(alarm,timeStamp[algorithm=onChange,causeMonitor=false],power{value,alarm})";
std::cout << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "record[process=true,xxx=yyy]field(alarm,timeStamp[shareData=true],power.value)";
std::cout << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
@@ -79,7 +63,7 @@ out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
+ "getField(alarm,timeStamp,power{value,alarm},"
+ "current{value,alarm},voltage{value,alarm})";
std::cout << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
@@ -88,7 +72,7 @@ out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
+ "1{voltage.value,current.value,power.value}"
+ "})";
std::cout << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
@@ -100,21 +84,22 @@ out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
+ "ps1{alarm,timeStamp,power{value,alarm},current{value,alarm},voltage{value,alarm}}"
+ ")";
std::cout << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "a{b{c{d}}}";
std::cout << String("request") <<std::endl << request <<std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get());
out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
request = "record[process=true,xxx=yyy]field(alarm,timeStamp[shareData=true],power.value";
std::cout << String("request") <<std::endl << request <<std::endl;
std::cout << std::endl << "Error Expected for next call!!" << std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get()==NULL);
std::cout << "reason " << createRequest->getMessage() << std::endl;
request = String("record[process=true,xxx=yyy]")
+ "putField(power.value)"
+ "getField(alarm,timeStamp,power{value,alarm},"
@@ -124,13 +109,15 @@ out.clear(); pvRequest->toString(&out); std::cout << out << std::endl;
+ ")";
std::cout << String("request") <<std::endl << request <<std::endl;
std::cout << std::endl << "Error Expected for next call!!" << std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get()==NULL);
std::cout << "reason " << createRequest->getMessage() << std::endl;
request = "record[process=true,power.value";
std::cout << String("request") <<std::endl << request <<std::endl;
std::cout << std::endl << "Error Expected for next call!!" << std::endl;
pvRequest = getCreateRequest()->createRequest(request,requester);
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get()==NULL);
std::cout << "reason " << createRequest->getMessage() << std::endl;
}
int main()