completed merge

This commit is contained in:
Matej Sekoranja
2014-06-10 00:09:08 +02:00
61 changed files with 3280 additions and 1955 deletions
+177 -41
View File
@@ -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