symmetric RPC

This commit is contained in:
Matej Sekoranja
2011-11-07 13:29:30 +01:00
parent 4960ee54ca
commit d46f024e6b
6 changed files with 30 additions and 79 deletions

View File

@@ -267,8 +267,6 @@ class ChannelPutGetRequesterImpl : public ChannelPutGetRequester
class ChannelRPCRequesterImpl : public ChannelRPCRequester
{
//ChannelRPC::shared_pointer m_channelRPC;
epics::pvData::PVStructure::shared_pointer m_pvStructure;
epics::pvData::BitSet::shared_pointer m_bitSet;
virtual String getRequesterName()
{
@@ -280,20 +278,11 @@ class ChannelRPCRequesterImpl : public ChannelRPCRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void channelRPCConnect(const epics::pvData::Status& status,ChannelRPC::shared_pointer const & channelRPC,
epics::pvData::PVStructure::shared_pointer const & pvStructure,epics::pvData::BitSet::shared_pointer const & bitSet)
virtual void channelRPCConnect(const epics::pvData::Status& status,ChannelRPC::shared_pointer const & channelRPC)
{
std::cout << "channelRPCConnect(" << status.toString() << ")" << std::endl;
if (status.isSuccess())
{
String st;
pvStructure->toString(&st);
std::cout << st << std::endl;
}
//m_channelRPC = channelRPC;
m_pvStructure = pvStructure;
m_bitSet = bitSet;
}
virtual void requestDone(const epics::pvData::Status& status,epics::pvData::PVStructure::shared_pointer const & pvResponse)
@@ -529,7 +518,8 @@ int main(int argc,char *argv[])
PVStructure::shared_pointer pvRequest = getCreateRequest()->createRequest("record[]field(arguments)");
ChannelRPC::shared_pointer channelRPC = channel->createChannelRPC(channelRPCRequesterImpl, pvRequest);
epicsThreadSleep ( 1.0 );
channelRPC->request(false);
// for test simply use pvRequest as arguments
channelRPC->request(pvRequest, false);
epicsThreadSleep ( 1.0 );
channelRPC->destroy();
}

View File

@@ -371,12 +371,10 @@ class MockChannelRPC : public ChannelRPC
private:
ChannelRPCRequester::shared_pointer m_channelRPCRequester;
PVStructure::shared_pointer m_pvStructure;
BitSet::shared_pointer m_bitSet;
protected:
MockChannelRPC(ChannelRPCRequester::shared_pointer const & channelRPCRequester, PVStructure::shared_pointer const & pvStructure, PVStructure::shared_pointer const & pvRequest) :
m_channelRPCRequester(channelRPCRequester), m_pvStructure(pvStructure),
m_bitSet(new BitSet(pvStructure->getNumberFields()))
m_channelRPCRequester(channelRPCRequester), m_pvStructure(pvStructure)
{
PVDATA_REFCOUNT_MONITOR_CONSTRUCT(mockChannelRPC);
}
@@ -386,7 +384,7 @@ class MockChannelRPC : public ChannelRPC
{
ChannelRPC::shared_pointer thisPtr(new MockChannelRPC(channelRPCRequester, pvStructure, pvRequest));
// TODO pvRequest
channelRPCRequester->channelRPCConnect(Status::OK, thisPtr, pvStructure, static_cast<MockChannelRPC*>(thisPtr.get())->m_bitSet);
channelRPCRequester->channelRPCConnect(Status::OK, thisPtr);
return thisPtr;
}
@@ -395,7 +393,7 @@ class MockChannelRPC : public ChannelRPC
PVDATA_REFCOUNT_MONITOR_DESTRUCT(mockChannelRPC);
}
virtual void request(bool lastRequest)
virtual void request(epics::pvData::PVStructure::shared_pointer const & pvArgument, bool lastRequest)
{
m_channelRPCRequester->requestDone(Status::OK, m_pvStructure);
if (lastRequest)