ca provider ported to new API
This commit is contained in:
@@ -343,7 +343,7 @@ ChannelPutGet::shared_pointer CAChannel::createChannelPutGet(
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, "not supported");
|
||||
ChannelPutGet::shared_pointer nullChannelPutGet;
|
||||
EXCEPTION_GUARD(channelPutGetRequester->channelPutGetConnect(errorStatus, nullChannelPutGet,
|
||||
PVStructure::shared_pointer(), PVStructure::shared_pointer()));
|
||||
Structure::const_shared_pointer(), Structure::const_shared_pointer()));
|
||||
return nullChannelPutGet;
|
||||
}
|
||||
|
||||
@@ -374,7 +374,7 @@ ChannelArray::shared_pointer CAChannel::createChannelArray(
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, "not supported");
|
||||
ChannelArray::shared_pointer nullChannelArray;
|
||||
EXCEPTION_GUARD(channelArrayRequester->channelArrayConnect(errorStatus, nullChannelArray,
|
||||
PVArray::shared_pointer()));
|
||||
Array::const_shared_pointer()));
|
||||
return nullChannelArray;
|
||||
}
|
||||
|
||||
@@ -527,7 +527,7 @@ CAChannelGet::CAChannelGet(CAChannel::shared_pointer const & _channel,
|
||||
void CAChannelGet::activate()
|
||||
{
|
||||
EXCEPTION_GUARD(channelGetRequester->channelGetConnect(Status::Ok, shared_from_this(),
|
||||
pvStructure, bitSet));
|
||||
pvStructure->getStructure()));
|
||||
}
|
||||
|
||||
|
||||
@@ -852,17 +852,17 @@ void CAChannelGet::getDone(struct event_handler_args &args)
|
||||
std::cout << "no copy func implemented" << std::endl;
|
||||
}
|
||||
|
||||
EXCEPTION_GUARD(channelGetRequester->getDone(Status::Ok));
|
||||
EXCEPTION_GUARD(channelGetRequester->getDone(Status::Ok, shared_from_this(), pvStructure, bitSet));
|
||||
}
|
||||
else
|
||||
{
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, String(ca_message(args.status)));
|
||||
EXCEPTION_GUARD(channelGetRequester->getDone(errorStatus));
|
||||
EXCEPTION_GUARD(channelGetRequester->getDone(errorStatus, shared_from_this(), PVStructure::shared_pointer(), BitSet::shared_pointer()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CAChannelGet::get(bool lastRequest)
|
||||
void CAChannelGet::get()
|
||||
{
|
||||
int result = ca_array_get_callback(getType, channel->getElementCount(),
|
||||
channel->getChannelID(), ca_get_handler, this);
|
||||
@@ -873,10 +873,10 @@ void CAChannelGet::get(bool lastRequest)
|
||||
else
|
||||
{
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, String(ca_message(result)));
|
||||
EXCEPTION_GUARD(channelGetRequester->getDone(errorStatus));
|
||||
EXCEPTION_GUARD(channelGetRequester->getDone(errorStatus, shared_from_this(), PVStructure::shared_pointer(), BitSet::shared_pointer()));
|
||||
}
|
||||
|
||||
if (lastRequest)
|
||||
if (lastRequestFlag)
|
||||
destroy();
|
||||
}
|
||||
|
||||
@@ -888,6 +888,12 @@ void CAChannelGet::cancel()
|
||||
// noop
|
||||
}
|
||||
|
||||
void CAChannelGet::lastRequest()
|
||||
{
|
||||
// TODO sync !!!
|
||||
lastRequestFlag = true;
|
||||
}
|
||||
|
||||
/* --------------- epics::pvData::Destroyable --------------- */
|
||||
|
||||
|
||||
@@ -955,7 +961,7 @@ CAChannelPut::CAChannelPut(CAChannel::shared_pointer const & _channel,
|
||||
void CAChannelPut::activate()
|
||||
{
|
||||
EXCEPTION_GUARD(channelPutRequester->channelPutConnect(Status::Ok, shared_from_this(),
|
||||
pvStructure, bitSet));
|
||||
pvStructure->getStructure()));
|
||||
}
|
||||
|
||||
|
||||
@@ -1110,26 +1116,28 @@ void CAChannelPut::putDone(struct event_handler_args &args)
|
||||
{
|
||||
if (args.status == ECA_NORMAL)
|
||||
{
|
||||
EXCEPTION_GUARD(channelPutRequester->putDone(Status::Ok));
|
||||
EXCEPTION_GUARD(channelPutRequester->putDone(Status::Ok, shared_from_this()));
|
||||
}
|
||||
else
|
||||
{
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, String(ca_message(args.status)));
|
||||
EXCEPTION_GUARD(channelPutRequester->putDone(errorStatus));
|
||||
EXCEPTION_GUARD(channelPutRequester->putDone(errorStatus, shared_from_this()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CAChannelPut::put(bool lastRequest)
|
||||
void CAChannelPut::put(PVStructure::shared_pointer const & pvPutStructure,
|
||||
BitSet::shared_pointer const & /*putBitSet*/)
|
||||
{
|
||||
doPut putFunc = doPutFuncTable[channel->getNativeType()];
|
||||
if (putFunc)
|
||||
{
|
||||
int result = putFunc(channel, this, pvStructure);
|
||||
// TODO now we always put all
|
||||
int result = putFunc(channel, this, pvPutStructure);
|
||||
if (result != ECA_NORMAL)
|
||||
{
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, String(ca_message(result)));
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(errorStatus));
|
||||
EXCEPTION_GUARD(channelPutRequester->putDone(errorStatus, shared_from_this()));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1139,7 +1147,7 @@ void CAChannelPut::put(bool lastRequest)
|
||||
}
|
||||
|
||||
// TODO here???!!!
|
||||
if (lastRequest)
|
||||
if (lastRequestFlag)
|
||||
destroy();
|
||||
}
|
||||
|
||||
@@ -1157,13 +1165,18 @@ void CAChannelPut::getDone(struct event_handler_args &args)
|
||||
std::cout << "no copy func implemented" << std::endl;
|
||||
}
|
||||
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(Status::Ok));
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(Status::Ok, shared_from_this(), pvStructure, bitSet));
|
||||
}
|
||||
else
|
||||
{
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, String(ca_message(args.status)));
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(errorStatus));
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(errorStatus, shared_from_this(),
|
||||
PVStructure::shared_pointer(), BitSet::shared_pointer()));
|
||||
}
|
||||
|
||||
// TODO here???!!!
|
||||
if (lastRequestFlag)
|
||||
destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -1178,7 +1191,8 @@ void CAChannelPut::get()
|
||||
else
|
||||
{
|
||||
Status errorStatus(Status::STATUSTYPE_ERROR, String(ca_message(result)));
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(errorStatus));
|
||||
EXCEPTION_GUARD(channelPutRequester->getDone(errorStatus, shared_from_this(),
|
||||
PVStructure::shared_pointer(), BitSet::shared_pointer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1191,6 +1205,12 @@ void CAChannelPut::cancel()
|
||||
// noop
|
||||
}
|
||||
|
||||
void CAChannelPut::lastRequest()
|
||||
{
|
||||
// TODO sync !!!
|
||||
lastRequestFlag = true;
|
||||
}
|
||||
|
||||
/* --------------- epics::pvData::Destroyable --------------- */
|
||||
|
||||
|
||||
|
||||
@@ -142,11 +142,12 @@ public:
|
||||
|
||||
/* --------------- epics::pvAccess::ChannelGet --------------- */
|
||||
|
||||
virtual void get(bool lastRequest);
|
||||
virtual void get();
|
||||
|
||||
/* --------------- epics::pvData::ChannelRequest --------------- */
|
||||
|
||||
virtual void cancel();
|
||||
virtual void lastRequest();
|
||||
|
||||
/* --------------- epics::pvData::Destroyable --------------- */
|
||||
|
||||
@@ -170,6 +171,9 @@ private:
|
||||
|
||||
epics::pvData::PVStructure::shared_pointer pvStructure;
|
||||
epics::pvData::BitSet::shared_pointer bitSet;
|
||||
|
||||
// TODO AtomicBoolean !!!
|
||||
bool lastRequestFlag;
|
||||
};
|
||||
|
||||
|
||||
@@ -193,12 +197,16 @@ public:
|
||||
|
||||
/* --------------- epics::pvAccess::ChannelPut --------------- */
|
||||
|
||||
virtual void put(bool lastRequest);
|
||||
virtual void put(
|
||||
epics::pvData::PVStructure::shared_pointer const & pvPutStructure,
|
||||
epics::pvData::BitSet::shared_pointer const & putBitSet
|
||||
);
|
||||
virtual void get();
|
||||
|
||||
/* --------------- epics::pvData::ChannelRequest --------------- */
|
||||
|
||||
virtual void cancel();
|
||||
virtual void lastRequest();
|
||||
|
||||
/* --------------- epics::pvData::Destroyable --------------- */
|
||||
|
||||
@@ -222,6 +230,9 @@ private:
|
||||
|
||||
epics::pvData::PVStructure::shared_pointer pvStructure;
|
||||
epics::pvData::BitSet::shared_pointer bitSet;
|
||||
|
||||
// TODO AtomicBoolean !!!
|
||||
bool lastRequestFlag;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user