major changes to dbdToPv
This commit is contained in:
@@ -38,10 +38,10 @@ CAChannel::shared_pointer CAChannel::create(CAChannelProvider::shared_pointer co
|
||||
if(DEBUG_LEVEL>0) {
|
||||
cout<< "CAChannel::create " << channelName << endl;
|
||||
}
|
||||
CAChannelPtr thisPtr(
|
||||
CAChannelPtr caChannel(
|
||||
new CAChannel(channelName, channelProvider, channelRequester));
|
||||
thisPtr->activate(priority);
|
||||
return thisPtr;
|
||||
caChannel->activate(priority);
|
||||
return caChannel;
|
||||
}
|
||||
|
||||
static void ca_connection_handler(struct connection_handler_args args)
|
||||
@@ -487,6 +487,8 @@ void CAChannelGet::channelStateChange(
|
||||
throw std::runtime_error(mess);
|
||||
}
|
||||
|
||||
std::string CAChannelGet::getRequesterName() { return "CAChannelGet";}
|
||||
|
||||
void CAChannelGet::channelDisconnect(bool destroy)
|
||||
{
|
||||
if(DEBUG_LEVEL>0) {
|
||||
@@ -498,8 +500,6 @@ void CAChannelGet::channelDisconnect(bool destroy)
|
||||
if(!destroy) channel->addChannelGet(shared_from_this());
|
||||
}
|
||||
|
||||
/* --------------- epics::pvAccess::ChannelGet --------------- */
|
||||
|
||||
namespace {
|
||||
|
||||
static void ca_get_handler(struct event_handler_args args)
|
||||
@@ -622,6 +622,8 @@ void CAChannelPut::channelStateChange(
|
||||
throw std::runtime_error(mess);
|
||||
}
|
||||
|
||||
std::string CAChannelPut::getRequesterName() { return "CAChannelPut";}
|
||||
|
||||
void CAChannelPut::channelDisconnect(bool destroy)
|
||||
{
|
||||
if(DEBUG_LEVEL>0) {
|
||||
@@ -866,6 +868,7 @@ void CAChannelMonitor::channelStateChange(
|
||||
throw std::runtime_error(mess);
|
||||
}
|
||||
|
||||
std::string CAChannelMonitor::getRequesterName() { return "CAChannelMonitor";}
|
||||
|
||||
void CAChannelMonitor::channelDisconnect(bool destroy)
|
||||
{
|
||||
|
||||
@@ -22,7 +22,6 @@ namespace epics {
|
||||
namespace pvAccess {
|
||||
namespace ca {
|
||||
|
||||
|
||||
class CAChannelGetField;
|
||||
typedef std::tr1::shared_ptr<CAChannelGetField> CAChannelGetFieldPtr;
|
||||
typedef std::tr1::weak_ptr<CAChannelGetField> CAChannelGetFieldWPtr;
|
||||
@@ -53,22 +52,18 @@ class CAChannel :
|
||||
public Channel,
|
||||
public std::tr1::enable_shared_from_this<CAChannel>
|
||||
{
|
||||
|
||||
public:
|
||||
POINTER_DEFINITIONS(CAChannel);
|
||||
|
||||
static size_t num_instances;
|
||||
|
||||
static CAChannelPtr create(CAChannelProvider::shared_pointer const & channelProvider,
|
||||
std::string const & channelName,
|
||||
short priority,
|
||||
ChannelRequester::shared_pointer const & channelRequester);
|
||||
|
||||
static CAChannelPtr create(
|
||||
CAChannelProvider::shared_pointer const & channelProvider,
|
||||
std::string const & channelName,
|
||||
short priority,
|
||||
ChannelRequester::shared_pointer const & channelRequester);
|
||||
virtual ~CAChannel();
|
||||
|
||||
void connected();
|
||||
void disconnected();
|
||||
|
||||
chid getChannelID();
|
||||
|
||||
virtual std::tr1::shared_ptr<ChannelProvider> getProvider();
|
||||
@@ -76,54 +71,36 @@ public:
|
||||
virtual ConnectionState getConnectionState();
|
||||
virtual std::string getChannelName();
|
||||
virtual std::tr1::shared_ptr<ChannelRequester> getChannelRequester();
|
||||
|
||||
virtual void getField(GetFieldRequester::shared_pointer const & requester,std::string const & subField);
|
||||
|
||||
virtual AccessRights getAccessRights(epics::pvData::PVField::shared_pointer const & pvField);
|
||||
|
||||
virtual ChannelGet::shared_pointer createChannelGet(
|
||||
ChannelGetRequester::shared_pointer const & channelGetRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
virtual ChannelPut::shared_pointer createChannelPut(
|
||||
ChannelPutRequester::shared_pointer const & channelPutRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
virtual Monitor::shared_pointer createMonitor(
|
||||
MonitorRequester::shared_pointer const & monitorRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
virtual void printInfo(std::ostream& out);
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
void attachContext();
|
||||
|
||||
void addChannelGet(const CAChannelGetPtr & get);
|
||||
void addChannelPut(const CAChannelPutPtr & get);
|
||||
void addChannelMonitor(const CAChannelMonitorPtr & get);
|
||||
void disconnectChannel();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
virtual void destroy() {}
|
||||
|
||||
CAChannel(std::string const & channelName,
|
||||
CAChannelProvider::shared_pointer const & channelProvider,
|
||||
ChannelRequester::shared_pointer const & channelRequester);
|
||||
void activate(short priority);
|
||||
|
||||
std::string channelName;
|
||||
|
||||
CAChannelProviderWPtr channelProvider;
|
||||
ChannelRequester::weak_pointer channelRequester;
|
||||
|
||||
chid channelID;
|
||||
bool channelCreated;
|
||||
|
||||
epics::pvData::Mutex requestsMutex;
|
||||
|
||||
std::queue<CAChannelGetFieldPtr> getFieldQueue;
|
||||
@@ -142,45 +119,32 @@ class CAChannelGet :
|
||||
public ChannelBaseRequester,
|
||||
public std::tr1::enable_shared_from_this<CAChannelGet>
|
||||
{
|
||||
|
||||
public:
|
||||
POINTER_DEFINITIONS(CAChannelGet);
|
||||
|
||||
static size_t num_instances;
|
||||
|
||||
static CAChannelGet::shared_pointer create(CAChannel::shared_pointer const & channel,
|
||||
ChannelGetRequester::shared_pointer const & channelGetRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
virtual ~CAChannelGet();
|
||||
|
||||
void getDone(struct event_handler_args &args);
|
||||
|
||||
/* --------------- epics::pvAccess::ChannelGet --------------- */
|
||||
virtual void get();
|
||||
|
||||
/* --------------- epics::pvData::ChannelRequest --------------- */
|
||||
virtual Channel::shared_pointer getChannel();
|
||||
virtual void cancel();
|
||||
virtual void lastRequest();
|
||||
|
||||
/* --------------- ChannelRequester --------------- */
|
||||
virtual void channelCreated(
|
||||
const epics::pvData::Status& status,
|
||||
Channel::shared_pointer const & channel);
|
||||
virtual void channelStateChange(
|
||||
Channel::shared_pointer const & channel,
|
||||
Channel::ConnectionState cosnectionState);
|
||||
virtual std::string getRequesterName() { return "CAChannelGet";}
|
||||
/* --------------- ChannelBaseRequester --------------- */
|
||||
virtual std::string getRequesterName();
|
||||
virtual void channelDisconnect(bool destroy);
|
||||
|
||||
void activate();
|
||||
|
||||
private:
|
||||
/* --------------- Destroyable --------------- */
|
||||
virtual void destroy() {}
|
||||
|
||||
virtual void destroy() {}
|
||||
CAChannelGet(CAChannel::shared_pointer const & _channel,
|
||||
ChannelGetRequester::shared_pointer const & _channelGetRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
@@ -188,14 +152,11 @@ private:
|
||||
CAChannelPtr channel;
|
||||
ChannelGetRequester::weak_pointer channelGetRequester;
|
||||
epics::pvData::PVStructurePtr const & pvRequest;
|
||||
|
||||
DbdToPvPtr dbdToPv;
|
||||
epics::pvData::PVStructure::shared_pointer pvStructure;
|
||||
epics::pvData::BitSet::shared_pointer bitSet;
|
||||
};
|
||||
|
||||
|
||||
|
||||
class CAChannelPut :
|
||||
public ChannelPut,
|
||||
public ChannelRequester,
|
||||
@@ -205,58 +166,40 @@ class CAChannelPut :
|
||||
|
||||
public:
|
||||
POINTER_DEFINITIONS(CAChannelPut);
|
||||
|
||||
static size_t num_instances;
|
||||
|
||||
static CAChannelPut::shared_pointer create(CAChannel::shared_pointer const & channel,
|
||||
ChannelPutRequester::shared_pointer const & channelPutRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
virtual ~CAChannelPut();
|
||||
|
||||
void getDone(struct event_handler_args &args);
|
||||
|
||||
/* --------------- epics::pvAccess::ChannelPut --------------- */
|
||||
|
||||
virtual void put(
|
||||
epics::pvData::PVStructure::shared_pointer const & pvPutStructure,
|
||||
epics::pvData::BitSet::shared_pointer const & putBitSet
|
||||
);
|
||||
virtual void get();
|
||||
|
||||
/* --------------- epics::pvData::ChannelRequest --------------- */
|
||||
|
||||
virtual Channel::shared_pointer getChannel();
|
||||
virtual void cancel();
|
||||
virtual void lastRequest();
|
||||
|
||||
/* --------------- ChannelRequester --------------- */
|
||||
virtual void channelCreated(
|
||||
const epics::pvData::Status& status,
|
||||
Channel::shared_pointer const & channel);
|
||||
virtual void channelStateChange(
|
||||
Channel::shared_pointer const & channel,
|
||||
Channel::ConnectionState connectionState);
|
||||
virtual std::string getRequesterName() { return "CAChannelPut";}
|
||||
/* --------------- ChannelBaseRequester --------------- */
|
||||
virtual std::string getRequesterName();
|
||||
virtual void channelDisconnect(bool destroy);
|
||||
|
||||
void activate();
|
||||
|
||||
private:
|
||||
/* --------------- Destroyable --------------- */
|
||||
|
||||
virtual void destroy() {}
|
||||
|
||||
virtual void destroy() {}
|
||||
CAChannelPut(CAChannel::shared_pointer const & _channel,
|
||||
ChannelPutRequester::shared_pointer const & _channelPutRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
CAChannelPtr channel;
|
||||
ChannelPutRequester::weak_pointer channelPutRequester;
|
||||
const epics::pvData::PVStructure::shared_pointer pvRequest;
|
||||
bool block;
|
||||
|
||||
DbdToPvPtr dbdToPv;
|
||||
epics::pvData::PVStructure::shared_pointer pvStructure;
|
||||
epics::pvData::BitSet::shared_pointer bitSet;
|
||||
@@ -274,46 +217,34 @@ class CAChannelMonitor :
|
||||
|
||||
public:
|
||||
POINTER_DEFINITIONS(CAChannelMonitor);
|
||||
|
||||
static size_t num_instances;
|
||||
|
||||
static CAChannelMonitor::shared_pointer create(CAChannel::shared_pointer const & channel,
|
||||
MonitorRequester::shared_pointer const & monitorRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
virtual ~CAChannelMonitor();
|
||||
|
||||
void subscriptionEvent(struct event_handler_args &args);
|
||||
|
||||
/* --------------- Monitor --------------- */
|
||||
|
||||
virtual epics::pvData::Status start();
|
||||
virtual epics::pvData::Status stop();
|
||||
virtual MonitorElementPtr poll();
|
||||
virtual void release(MonitorElementPtr const & monitorElement);
|
||||
|
||||
/* --------------- epics::pvData::ChannelRequest --------------- */
|
||||
virtual void cancel();
|
||||
/* --------------- ChannelRequester --------------- */
|
||||
|
||||
virtual void channelCreated(
|
||||
const epics::pvData::Status& status,
|
||||
Channel::shared_pointer const & channel);
|
||||
virtual void channelStateChange(
|
||||
Channel::shared_pointer const & channel,
|
||||
Channel::ConnectionState connectionState);
|
||||
virtual std::string getRequesterName() { return "CAChannelMonitor";}
|
||||
/* --------------- ChannelBaseRequester --------------- */
|
||||
virtual std::string getRequesterName();
|
||||
|
||||
virtual void channelDisconnect(bool destroy);
|
||||
void activate();
|
||||
private:
|
||||
/* --------------- Destroyable --------------- */
|
||||
virtual void destroy() {}
|
||||
|
||||
CAChannelMonitor(CAChannel::shared_pointer const & _channel,
|
||||
MonitorRequester::shared_pointer const & _monitorRequester,
|
||||
epics::pvData::PVStructurePtr const & pvRequest);
|
||||
|
||||
|
||||
CAChannelPtr channel;
|
||||
MonitorRequester::weak_pointer monitorRequester;
|
||||
const epics::pvData::PVStructure::shared_pointer pvRequest;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -73,17 +73,11 @@ class DbdToPv
|
||||
{
|
||||
public:
|
||||
POINTER_DEFINITIONS(DbdToPv);
|
||||
/** @brief
|
||||
*
|
||||
*/
|
||||
static DbdToPvPtr create(
|
||||
CAChannelPtr const & caChannel,
|
||||
epics::pvData::PVStructurePtr const & pvRequest,
|
||||
IOType ioType
|
||||
);
|
||||
/** @brief
|
||||
*
|
||||
*/
|
||||
epics::pvData::PVStructurePtr createPVStructure();
|
||||
chtype getRequestType();
|
||||
epics::pvData::Status getFromDBD(
|
||||
@@ -100,10 +94,8 @@ public:
|
||||
void descriptionConnected(struct connection_handler_args args);
|
||||
void getDescriptionDone(struct event_handler_args &args);
|
||||
void putDone(struct event_handler_args &args);
|
||||
|
||||
private:
|
||||
DbdToPv(IOType ioType);
|
||||
|
||||
void activate(
|
||||
CAChannelPtr const & caChannel,
|
||||
epics::pvData::PVStructurePtr const & pvRequest
|
||||
@@ -119,6 +111,7 @@ private:
|
||||
bool firstTime;
|
||||
chtype caValueType;
|
||||
chtype caRequestType;
|
||||
unsigned long maxElements;
|
||||
epicsTimeStamp caTimeStamp;
|
||||
CaAlarm caAlarm;
|
||||
CaDisplay caDisplay;
|
||||
|
||||
Reference in New Issue
Block a user