Status change done.

This commit is contained in:
Matej Sekoranja
2011-02-17 01:37:09 +01:00
parent f7742d3eb0
commit 04dd811f0e
2 changed files with 47 additions and 54 deletions

View File

@@ -10,9 +10,9 @@ PROD_HOST += testCreateRequest
testCreateRequest_SRCS += testCreateRequest.cpp
testCreateRequest_LIBS += pvData pvAccess Com
#PROD_HOST += testMockClient
#testMockClient_SRCS = testMockClient.cpp MockClientImpl.cpp
#testMockClient_LIBS = pvData pvAccess Com
PROD_HOST += testMockClient
testMockClient_SRCS = testMockClient.cpp MockClientImpl.cpp
testMockClient_LIBS = pvData pvAccess Com
include $(TOP)/configure/RULES
#----------------------------------------

View File

@@ -38,9 +38,8 @@ class MockChannelProcess : public ChannelProcess
PVField* field = pvStructure->getSubField(String("value"));
if (field == 0)
{
Status* noValueFieldStatus = getStatusCreate()->createStatus(STATUSTYPE_ERROR, "no 'value' field");
Status noValueFieldStatus(Status::STATUSTYPE_ERROR, "no 'value' field");
m_channelProcessRequester->channelProcessConnect(noValueFieldStatus, this);
delete noValueFieldStatus;
// NOTE client must destroy this instance...
// do not access any fields and return ASAP
@@ -49,9 +48,8 @@ class MockChannelProcess : public ChannelProcess
if (field->getField()->getType() != scalar)
{
Status* notAScalarStatus = getStatusCreate()->createStatus(STATUSTYPE_ERROR, "'value' field not scalar type");
Status notAScalarStatus(Status::STATUSTYPE_ERROR, "'value' field not scalar type");
m_channelProcessRequester->channelProcessConnect(notAScalarStatus, this);
delete notAScalarStatus;
// NOTE client must destroy this instance….
// do not access any fields and return ASAP
@@ -61,7 +59,7 @@ class MockChannelProcess : public ChannelProcess
m_valueField = static_cast<PVScalar*>(field);
// TODO pvRequest
m_channelProcessRequester->channelProcessConnect(getStatusCreate()->getStatusOK(), this);
m_channelProcessRequester->channelProcessConnect(Status::OK, this);
}
virtual void process(bool lastRequest)
@@ -137,7 +135,7 @@ class MockChannelProcess : public ChannelProcess
break;
}
m_channelProcessRequester->processDone(getStatusCreate()->getStatusOK());
m_channelProcessRequester->processDone(Status::OK);
if (lastRequest)
destroy();
@@ -179,12 +177,12 @@ class MockChannelGet : public ChannelGet
PVDATA_REFCOUNT_MONITOR_CONSTRUCT(mockChannelGet);
// TODO pvRequest
m_channelGetRequester->channelGetConnect(getStatusCreate()->getStatusOK(), this, m_pvStructure, m_bitSet);
m_channelGetRequester->channelGetConnect(Status::OK, this, m_pvStructure, m_bitSet);
}
virtual void get(bool lastRequest)
{
m_channelGetRequester->getDone(getStatusCreate()->getStatusOK());
m_channelGetRequester->getDone(Status::OK);
if (m_first)
{
m_first = false;
@@ -234,19 +232,19 @@ class MockChannelPut : public ChannelPut
PVDATA_REFCOUNT_MONITOR_CONSTRUCT(mockChannelPut);
// TODO pvRequest
m_channelPutRequester->channelPutConnect(getStatusCreate()->getStatusOK(), this, m_pvStructure, m_bitSet);
m_channelPutRequester->channelPutConnect(Status::OK, this, m_pvStructure, m_bitSet);
}
virtual void put(bool lastRequest)
{
m_channelPutRequester->putDone(getStatusCreate()->getStatusOK());
m_channelPutRequester->putDone(Status::OK);
if (lastRequest)
destroy();
}
virtual void get()
{
m_channelPutRequester->getDone(getStatusCreate()->getStatusOK());
m_channelPutRequester->getDone(Status::OK);
}
virtual void destroy()
@@ -296,22 +294,20 @@ class MockMonitor : public Monitor, public MonitorElement
m_changedBitSet->set(0);
// TODO pvRequest
m_monitorRequester->monitorConnect(getStatusCreate()->getStatusOK(), this, const_cast<Structure*>(m_pvStructure->getStructure()));
m_monitorRequester->monitorConnect(Status::OK, this, const_cast<Structure*>(m_pvStructure->getStructure()));
}
virtual Status* start()
virtual Status start()
{
// fist monitor
m_monitorRequester->monitorEvent(this);
// client needs to delete status, so passing shared OK instance is not right thing to do
return getStatusCreate()->createStatus(STATUSTYPE_OK, "Monitor started.");
return Status::OK;
}
virtual Status* stop()
virtual Status stop()
{
// client needs to delete status, so passing shared OK instance is not right thing to do
return getStatusCreate()->createStatus(STATUSTYPE_OK, "Monitor stopped.");
return Status::OK;
}
virtual MonitorElement* poll()
@@ -337,7 +333,7 @@ class MockMonitor : public Monitor, public MonitorElement
virtual void destroy()
{
delete stop();
stop();
delete m_lock;
delete m_overrunBitSet;
@@ -468,7 +464,7 @@ class MockChannel : public Channel {
virtual void getField(GetFieldRequester *requester,epics::pvData::String subField)
{
requester->getDone(getStatusCreate()->getStatusOK(),m_pvStructure->getSubField(subField)->getField());
requester->getDone(Status::OK,m_pvStructure->getSubField(subField)->getField());
}
virtual ChannelProcess* createChannelProcess(
@@ -597,7 +593,7 @@ class MockChannelProvider : public ChannelProvider {
epics::pvData::String channelName,
ChannelFindRequester *channelFindRequester)
{
channelFindRequester->channelFindResult(getStatusCreate()->getStatusOK(), m_mockChannelFind, true);
channelFindRequester->channelFindResult(Status::OK, m_mockChannelFind, true);
return m_mockChannelFind;
}
@@ -618,14 +614,13 @@ class MockChannelProvider : public ChannelProvider {
if (address == "local")
{
Channel* channel = new MockChannel(this, channelRequester, channelName, address);
channelRequester->channelCreated(getStatusCreate()->getStatusOK(), channel);
channelRequester->channelCreated(Status::OK, channel);
return channel;
}
else
{
Status* errorStatus = getStatusCreate()->createStatus(STATUSTYPE_ERROR, "only local supported", 0);
Status errorStatus(Status::STATUSTYPE_ERROR, "only local supported");
channelRequester->channelCreated(errorStatus, 0);
delete errorStatus; // TODO guard from CB
return 0;
}
}
@@ -693,10 +688,10 @@ class MockClientContext : public ClientContext
class ChannelFindRequesterImpl : public ChannelFindRequester
{
virtual void channelFindResult(epics::pvData::Status *status,ChannelFind *channelFind,bool wasFound)
virtual void channelFindResult(const epics::pvData::Status& status,ChannelFind *channelFind,bool wasFound)
{
std::cout << "[ChannelFindRequesterImpl] channelFindResult("
<< status->toString() << ", ..., " << wasFound << ")" << std::endl;
<< status.toString() << ", ..., " << wasFound << ")" << std::endl;
}
};
@@ -712,9 +707,9 @@ class ChannelRequesterImpl : public ChannelRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void channelCreated(epics::pvData::Status* status, Channel *channel)
virtual void channelCreated(const epics::pvData::Status& status, Channel *channel)
{
std::cout << "channelCreated(" << status->toString() << ", "
std::cout << "channelCreated(" << status.toString() << ", "
<< (channel ? channel->getChannelName() : "(null)") << ")" << std::endl;
}
@@ -736,9 +731,9 @@ class GetFieldRequesterImpl : public GetFieldRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void getDone(epics::pvData::Status *status,epics::pvData::FieldConstPtr field)
virtual void getDone(const epics::pvData::Status& status,epics::pvData::FieldConstPtr field)
{
std::cout << "getDone(" << status->toString() << ", ";
std::cout << "getDone(" << status.toString() << ", ";
if (field)
{
String str;
@@ -767,10 +762,10 @@ class ChannelGetRequesterImpl : public ChannelGetRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void channelGetConnect(epics::pvData::Status *status,ChannelGet *channelGet,
virtual void channelGetConnect(const epics::pvData::Status& status,ChannelGet *channelGet,
epics::pvData::PVStructure *pvStructure,epics::pvData::BitSet *bitSet)
{
std::cout << "channelGetConnect(" << status->toString() << ")" << std::endl;
std::cout << "channelGetConnect(" << status.toString() << ")" << std::endl;
// TODO sync
m_channelGet = channelGet;
@@ -778,9 +773,9 @@ class ChannelGetRequesterImpl : public ChannelGetRequester
m_bitSet = bitSet;
}
virtual void getDone(epics::pvData::Status *status)
virtual void getDone(const epics::pvData::Status& status)
{
std::cout << "getDone(" << status->toString() << ")" << std::endl;
std::cout << "getDone(" << status.toString() << ")" << std::endl;
String str;
m_pvStructure->toString(&str);
std::cout << str;
@@ -804,10 +799,10 @@ class ChannelPutRequesterImpl : public ChannelPutRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void channelPutConnect(epics::pvData::Status *status,ChannelPut *channelPut,
virtual void channelPutConnect(const epics::pvData::Status& status,ChannelPut *channelPut,
epics::pvData::PVStructure *pvStructure,epics::pvData::BitSet *bitSet)
{
std::cout << "channelPutConnect(" << status->toString() << ")" << std::endl;
std::cout << "channelPutConnect(" << status.toString() << ")" << std::endl;
// TODO sync
m_channelPut = channelPut;
@@ -815,18 +810,18 @@ class ChannelPutRequesterImpl : public ChannelPutRequester
m_bitSet = bitSet;
}
virtual void getDone(epics::pvData::Status *status)
virtual void getDone(const epics::pvData::Status& status)
{
std::cout << "getDone(" << status->toString() << ")" << std::endl;
std::cout << "getDone(" << status.toString() << ")" << std::endl;
String str;
m_pvStructure->toString(&str);
std::cout << str;
std::cout << std::endl;
}
virtual void putDone(epics::pvData::Status *status)
virtual void putDone(const epics::pvData::Status& status)
{
std::cout << "putDone(" << status->toString() << ")" << std::endl;
std::cout << "putDone(" << status.toString() << ")" << std::endl;
String str;
m_pvStructure->toString(&str);
std::cout << str;
@@ -848,9 +843,9 @@ class MonitorRequesterImpl : public MonitorRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void monitorConnect(Status* status, Monitor* monitor, Structure* structure)
virtual void monitorConnect(const Status& status, Monitor* monitor, Structure* structure)
{
std::cout << "monitorConnect(" << status->toString() << ")" << std::endl;
std::cout << "monitorConnect(" << status.toString() << ")" << std::endl;
if (structure)
{
String str;
@@ -897,17 +892,17 @@ class ChannelProcessRequesterImpl : public ChannelProcessRequester
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << messageTypeName[messageType] << ")" << std::endl;
}
virtual void channelProcessConnect(epics::pvData::Status *status,ChannelProcess *channelProcess)
virtual void channelProcessConnect(const epics::pvData::Status& status,ChannelProcess *channelProcess)
{
std::cout << "channelProcessConnect(" << status->toString() << ")" << std::endl;
std::cout << "channelProcessConnect(" << status.toString() << ")" << std::endl;
// TODO sync
m_channelProcess = channelProcess;
}
virtual void processDone(epics::pvData::Status *status)
virtual void processDone(const epics::pvData::Status& status)
{
std::cout << "processDone(" << status->toString() << ")" << std::endl;
std::cout << "processDone(" << status.toString() << ")" << std::endl;
}
};
@@ -946,9 +941,8 @@ int main(int argc,char *argv[])
MonitorRequesterImpl monitorRequesterImpl;
Monitor* monitor = channel->createMonitor(&monitorRequesterImpl, 0);
Status* status = monitor->start();
std::cout << "monitor->start() = " << status->toString() << std::endl;
delete status;
Status status = monitor->start();
std::cout << "monitor->start() = " << status.toString() << std::endl;
ChannelProcessRequesterImpl channelProcessRequester;
@@ -958,8 +952,7 @@ int main(int argc,char *argv[])
status = monitor->stop();
std::cout << "monitor->stop() = " << status->toString() << std::endl;
delete status;
std::cout << "monitor->stop() = " << status.toString() << std::endl;
monitor->destroy();