completed merge
This commit is contained in:
@@ -321,7 +321,9 @@ class SyncChannelGetRequesterImpl : public ChannelGetRequester, public SyncBaseR
|
||||
|
||||
bool syncGet(bool lastRequest, long timeOut) {
|
||||
resetEvent();
|
||||
m_channelGet->get(lastRequest);
|
||||
if (lastRequest)
|
||||
m_channelGet->lastRequest();
|
||||
m_channelGet->get();
|
||||
return waitUntilGetDone(timeOut);
|
||||
}
|
||||
|
||||
@@ -366,8 +368,7 @@ class SyncChannelGetRequesterImpl : public ChannelGetRequester, public SyncBaseR
|
||||
|
||||
virtual void channelGetConnect(
|
||||
const epics::pvData::Status& status,ChannelGet::shared_pointer const & channelGet,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvStructure,
|
||||
epics::pvData::BitSet::shared_pointer const & bitSet)
|
||||
epics::pvData::Structure::const_shared_pointer const & /*structure*/)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "channelGetConnect(" << status.toString() << ")" << std::endl;
|
||||
@@ -377,10 +378,8 @@ class SyncChannelGetRequesterImpl : public ChannelGetRequester, public SyncBaseR
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelGet = channelGet;
|
||||
m_pvStructure = pvStructure;
|
||||
m_bitSet = bitSet;
|
||||
}
|
||||
channelGet->get(false);
|
||||
channelGet->get();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -389,11 +388,21 @@ class SyncChannelGetRequesterImpl : public ChannelGetRequester, public SyncBaseR
|
||||
}
|
||||
|
||||
|
||||
virtual void getDone(const epics::pvData::Status& status)
|
||||
virtual void getDone(const epics::pvData::Status& status,
|
||||
ChannelGet::shared_pointer const & channelGet,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvStructure,
|
||||
epics::pvData::BitSet::shared_pointer const & bitSet)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "getDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelGet = channelGet;
|
||||
m_pvStructure = pvStructure;
|
||||
m_bitSet = bitSet;
|
||||
}
|
||||
|
||||
setGetStatus(status.isSuccess());
|
||||
signalEvent();
|
||||
}
|
||||
@@ -419,6 +428,7 @@ class SyncChannelPutRequesterImpl : public ChannelPutRequester, public SyncBaseR
|
||||
SyncBaseRequester(debug), m_channelName(channelName) {}
|
||||
|
||||
|
||||
// requires to do a get first
|
||||
bool syncPut(bool lastRequest, long timeOut)
|
||||
{
|
||||
|
||||
@@ -427,7 +437,9 @@ class SyncChannelPutRequesterImpl : public ChannelPutRequester, public SyncBaseR
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelPut->put(lastRequest);
|
||||
if (lastRequest)
|
||||
m_channelPut->lastRequest();
|
||||
m_channelPut->put(getPVStructure(), getBitSet());
|
||||
return waitUntilPutDone(timeOut);
|
||||
}
|
||||
|
||||
@@ -480,8 +492,7 @@ class SyncChannelPutRequesterImpl : public ChannelPutRequester, public SyncBaseR
|
||||
|
||||
virtual void channelPutConnect(const epics::pvData::Status& status,
|
||||
ChannelPut::shared_pointer const & channelPut,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvStructure,
|
||||
epics::pvData::BitSet::shared_pointer const & bitSet)
|
||||
epics::pvData::Structure::const_shared_pointer const & /*structure*/)
|
||||
{
|
||||
|
||||
if (m_debug)
|
||||
@@ -493,8 +504,6 @@ class SyncChannelPutRequesterImpl : public ChannelPutRequester, public SyncBaseR
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelPut = channelPut;
|
||||
m_pvStructure = pvStructure;
|
||||
m_bitSet = bitSet;
|
||||
}
|
||||
setConnectedStatus(true);
|
||||
}
|
||||
@@ -507,21 +516,37 @@ class SyncChannelPutRequesterImpl : public ChannelPutRequester, public SyncBaseR
|
||||
}
|
||||
|
||||
|
||||
virtual void getDone(const epics::pvData::Status& status)
|
||||
virtual void getDone(const epics::pvData::Status& status,
|
||||
ChannelPut::shared_pointer const & channelPut,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvStructure,
|
||||
epics::pvData::BitSet::shared_pointer const & bitSet)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "getDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelPut = channelPut;
|
||||
m_pvStructure = pvStructure;
|
||||
m_bitSet = bitSet;
|
||||
}
|
||||
|
||||
setGetStatus(status.isSuccess());
|
||||
signalEvent();
|
||||
}
|
||||
|
||||
|
||||
virtual void putDone(const epics::pvData::Status& status)
|
||||
virtual void putDone(const epics::pvData::Status& status,
|
||||
ChannelPut::shared_pointer const & channelPut)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "putDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelPut = channelPut;
|
||||
}
|
||||
|
||||
setPutStatus(status.isSuccess());
|
||||
signalEvent();
|
||||
}
|
||||
@@ -609,7 +634,9 @@ class SyncChannelProcessRequesterImpl : public ChannelProcessRequester, public S
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelProcess->process(lastRequest);
|
||||
if (lastRequest)
|
||||
m_channelProcess->lastRequest();
|
||||
m_channelProcess->process();
|
||||
return waitUntilProcessDone(timeOut);
|
||||
}
|
||||
|
||||
@@ -657,11 +684,17 @@ class SyncChannelProcessRequesterImpl : public ChannelProcessRequester, public S
|
||||
}
|
||||
|
||||
|
||||
virtual void processDone(const epics::pvData::Status& status)
|
||||
virtual void processDone(const epics::pvData::Status& status,
|
||||
ChannelProcess::shared_pointer const & channelProcess)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "processDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelProcess = channelProcess;
|
||||
}
|
||||
|
||||
setProcessStatus(status.isSuccess());
|
||||
signalEvent();
|
||||
}
|
||||
@@ -699,6 +732,7 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
}
|
||||
|
||||
|
||||
// requires getput is called first
|
||||
bool syncPutGet(bool lastRequest, double timeOut) {
|
||||
|
||||
if(!getConnectedStatus()) {
|
||||
@@ -706,7 +740,9 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelPutGet->putGet(lastRequest);
|
||||
if (lastRequest)
|
||||
m_channelPutGet->lastRequest();
|
||||
m_channelPutGet->putGet(getPVPutStructure(), getPVPutBitSet());
|
||||
return waitUntilPutGetDone(timeOut);
|
||||
}
|
||||
|
||||
@@ -729,6 +765,12 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
return m_putData;
|
||||
}
|
||||
|
||||
BitSet::shared_pointer getPVPutBitSet()
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
return m_putBitSet;
|
||||
}
|
||||
|
||||
|
||||
PVStructure::shared_pointer getPVGetStructure()
|
||||
{
|
||||
@@ -736,6 +778,11 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
return m_getData;
|
||||
}
|
||||
|
||||
BitSet::shared_pointer getPVGetBitSet()
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
return m_getBitSet;
|
||||
}
|
||||
|
||||
ChannelPutGet::shared_pointer getChannelPutGet()
|
||||
{
|
||||
@@ -760,8 +807,8 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
|
||||
virtual void channelPutGetConnect(const epics::pvData::Status& status,
|
||||
ChannelPutGet::shared_pointer const & channelPutGet,
|
||||
epics::pvData::PVStructure::shared_pointer const & putData,
|
||||
epics::pvData::PVStructure::shared_pointer const & getData)
|
||||
epics::pvData::Structure::const_shared_pointer const & /*putStructure*/,
|
||||
epics::pvData::Structure::const_shared_pointer const & /*getStructure*/)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "channelGetPutConnect("
|
||||
@@ -772,8 +819,8 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelPutGet = channelPutGet;
|
||||
m_putData = putData;
|
||||
m_getData = getData;
|
||||
//m_putStructure = putStructure;
|
||||
//m_getStructure = getStructure;
|
||||
}
|
||||
setConnectedStatus(true);
|
||||
}
|
||||
@@ -786,13 +833,21 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
}
|
||||
|
||||
|
||||
virtual void getGetDone(const epics::pvData::Status& status)
|
||||
virtual void getGetDone(const epics::pvData::Status& status,
|
||||
ChannelPutGet::shared_pointer const & channelPutGet,
|
||||
epics::pvData::PVStructure::shared_pointer const & getData,
|
||||
epics::pvData::BitSet::shared_pointer const & getBitSet)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "getGetDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelPutGet = channelPutGet;
|
||||
m_getData = getData;
|
||||
m_getBitSet = getBitSet;
|
||||
|
||||
m_getGetStatus = status.isSuccess();
|
||||
}
|
||||
|
||||
@@ -800,13 +855,21 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
}
|
||||
|
||||
|
||||
virtual void getPutDone(const epics::pvData::Status& status)
|
||||
virtual void getPutDone(const epics::pvData::Status& status,
|
||||
ChannelPutGet::shared_pointer const & channelPutGet,
|
||||
epics::pvData::PVStructure::shared_pointer const & putData,
|
||||
epics::pvData::BitSet::shared_pointer const & putBitSet)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "getPutDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelPutGet = channelPutGet;
|
||||
m_putData = putData;
|
||||
m_putBitSet = putBitSet;
|
||||
|
||||
m_getPutStatus = status.isSuccess();
|
||||
}
|
||||
|
||||
@@ -814,13 +877,21 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
}
|
||||
|
||||
|
||||
virtual void putGetDone(const epics::pvData::Status& status)
|
||||
virtual void putGetDone(const epics::pvData::Status& status,
|
||||
ChannelPutGet::shared_pointer const & channelPutGet,
|
||||
epics::pvData::PVStructure::shared_pointer const & getData,
|
||||
epics::pvData::BitSet::shared_pointer const & getBitSet)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << "." << "putGetDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelPutGet = channelPutGet;
|
||||
m_getData = getData;
|
||||
m_getBitSet = getBitSet;
|
||||
|
||||
m_putGetStatus = status.isSuccess();
|
||||
}
|
||||
|
||||
@@ -873,7 +944,9 @@ class SyncChannelPutGetRequesterImpl : public ChannelPutGetRequester, public Syn
|
||||
Mutex m_pointerMutex;
|
||||
ChannelPutGet::shared_pointer m_channelPutGet;
|
||||
epics::pvData::PVStructure::shared_pointer m_putData;
|
||||
epics::pvData::BitSet::shared_pointer m_putBitSet;
|
||||
epics::pvData::PVStructure::shared_pointer m_getData;
|
||||
epics::pvData::BitSet::shared_pointer m_getBitSet;
|
||||
};
|
||||
|
||||
|
||||
@@ -896,7 +969,9 @@ class SyncChannelRPCRequesterImpl : public ChannelRPCRequester, public SyncBaseR
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelRPC->request(pvArguments, lastRequest);
|
||||
if (lastRequest)
|
||||
m_channelRPC->lastRequest();
|
||||
m_channelRPC->request(pvArguments);
|
||||
return waitUntilRPC(timeOut);
|
||||
}
|
||||
|
||||
@@ -955,6 +1030,7 @@ class SyncChannelRPCRequesterImpl : public ChannelRPCRequester, public SyncBaseR
|
||||
|
||||
|
||||
virtual void requestDone (const epics::pvData::Status &status,
|
||||
ChannelRPC::shared_pointer const & channelRPC,
|
||||
epics::pvData::PVStructure::shared_pointer const &pvResponse)
|
||||
{
|
||||
|
||||
@@ -962,14 +1038,10 @@ class SyncChannelRPCRequesterImpl : public ChannelRPCRequester, public SyncBaseR
|
||||
std::cout << getRequesterName() << "." << "requestDone("
|
||||
<< status.toString() << ")" << std::endl;
|
||||
|
||||
if (status.isSuccess())
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelRPC = channelRPC;
|
||||
m_lastResponse = pvResponse;
|
||||
}
|
||||
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_done = status.isSuccess();
|
||||
}
|
||||
|
||||
@@ -1156,7 +1228,8 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
m_lengthArrayStatus(false) {}
|
||||
|
||||
|
||||
bool syncPut(bool lastRequest, int offset, int count, long timeOut)
|
||||
// note you need to do a get first
|
||||
bool syncPut(bool lastRequest, size_t offset, size_t count, long timeOut)
|
||||
{
|
||||
|
||||
if (!getConnectedStatus()) {
|
||||
@@ -1164,12 +1237,15 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelArray->putArray(lastRequest, offset, count);
|
||||
if (lastRequest)
|
||||
m_channelArray->lastRequest();
|
||||
// TODO stride !!!
|
||||
m_channelArray->putArray(getArray(), offset, count, 1);
|
||||
return waitUntilPutArrayDone(timeOut);
|
||||
}
|
||||
|
||||
|
||||
bool syncGet(bool lastRequest, int offset, int count, long timeOut)
|
||||
bool syncGet(bool lastRequest, size_t offset, size_t count, long timeOut)
|
||||
{
|
||||
|
||||
if (!getConnectedStatus()) {
|
||||
@@ -1177,12 +1253,15 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelArray->getArray(lastRequest, offset, count);
|
||||
if (lastRequest)
|
||||
m_channelArray->lastRequest();
|
||||
// TODO stride !!!
|
||||
m_channelArray->getArray(offset, count, 1);
|
||||
return waitUntilGetArrayDone(timeOut);
|
||||
}
|
||||
|
||||
|
||||
bool syncSetLength(bool lastRequest, int length, int capacity, long timeOut)
|
||||
bool syncSetLength(bool lastRequest, size_t length, size_t capacity, long timeOut)
|
||||
{
|
||||
|
||||
if (!getConnectedStatus()) {
|
||||
@@ -1190,7 +1269,23 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
m_channelArray->setLength(lastRequest, length, capacity);
|
||||
if (lastRequest)
|
||||
m_channelArray->lastRequest();
|
||||
m_channelArray->setLength(length, capacity);
|
||||
return waitUntilSetLengthDone(timeOut);
|
||||
}
|
||||
|
||||
bool syncGetLength(bool lastRequest, long timeOut)
|
||||
{
|
||||
|
||||
if (!getConnectedStatus()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
resetEvent();
|
||||
if (lastRequest)
|
||||
m_channelArray->lastRequest();
|
||||
m_channelArray->getLength();
|
||||
return waitUntilSetLengthDone(timeOut);
|
||||
}
|
||||
|
||||
@@ -1225,7 +1320,7 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
|
||||
virtual void channelArrayConnect(const epics::pvData::Status& status,
|
||||
ChannelArray::shared_pointer const & channelArray,
|
||||
epics::pvData::PVArray::shared_pointer const & pvArray)
|
||||
epics::pvData::Array::const_shared_pointer const & /*array*/)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << ".channelArrayConnect(" << status.toString() << ")" << std::endl;
|
||||
@@ -1234,7 +1329,6 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
{
|
||||
Lock lock(m_pointerMutex);
|
||||
m_channelArray = channelArray;
|
||||
m_pvArray = pvArray;
|
||||
}
|
||||
|
||||
setConnectedStatus(true);
|
||||
@@ -1248,38 +1342,78 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
}
|
||||
|
||||
|
||||
virtual void getArrayDone(const epics::pvData::Status& status)
|
||||
virtual void getArrayDone(const epics::pvData::Status& status,
|
||||
ChannelArray::shared_pointer const & channelArray,
|
||||
epics::pvData::PVArray::shared_pointer const & pvArray)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << ".getArrayDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelArray = channelArray;
|
||||
m_pvArray = pvArray;
|
||||
|
||||
m_getArrayStatus = status.isSuccess();
|
||||
signalEvent();
|
||||
}
|
||||
|
||||
|
||||
virtual void putArrayDone(const epics::pvData::Status& status)
|
||||
virtual void putArrayDone(const epics::pvData::Status& status,
|
||||
ChannelArray::shared_pointer const & channelArray)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << ".putArrayDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelArray = channelArray;
|
||||
|
||||
m_putArrayStatus = status.isSuccess();
|
||||
signalEvent();
|
||||
}
|
||||
|
||||
|
||||
virtual void setLengthDone(const epics::pvData::Status& status)
|
||||
virtual void setLengthDone(const epics::pvData::Status& status,
|
||||
ChannelArray::shared_pointer const & channelArray)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << ".setLengthDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelArray = channelArray;
|
||||
|
||||
m_lengthArrayStatus = status.isSuccess();
|
||||
signalEvent();
|
||||
}
|
||||
|
||||
virtual void getLengthDone(const epics::pvData::Status& status,
|
||||
ChannelArray::shared_pointer const & channelArray,
|
||||
size_t length, size_t capacity)
|
||||
{
|
||||
if (m_debug)
|
||||
std::cout << getRequesterName() << ".getLengthDone(" << status.toString() << ")" << std::endl;
|
||||
|
||||
Lock lock(m_pointerMutex);
|
||||
|
||||
m_channelArray = channelArray;
|
||||
m_length = length;
|
||||
m_capacity = capacity;
|
||||
|
||||
m_lengthArrayStatus = status.isSuccess();
|
||||
signalEvent();
|
||||
}
|
||||
|
||||
size_t getLength()
|
||||
{
|
||||
return m_length;
|
||||
}
|
||||
|
||||
size_t getCapacity()
|
||||
{
|
||||
return m_capacity;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -1343,6 +1477,8 @@ class SyncChannelArrayRequesterImpl : public ChannelArrayRequester, public SyncB
|
||||
Mutex m_pointerMutex;
|
||||
ChannelArray::shared_pointer m_channelArray;
|
||||
epics::pvData::PVArray::shared_pointer m_pvArray;
|
||||
size_t m_length;
|
||||
size_t m_capacity;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user