merge
This commit is contained in:
@@ -277,13 +277,6 @@ std::tr1::shared_ptr<ChannelRequester> CAChannel::getChannelRequester()
|
||||
return channelRequester;
|
||||
}
|
||||
|
||||
|
||||
bool CAChannel::isConnected()
|
||||
{
|
||||
return (ca_state(channelID) == cs_conn);
|
||||
}
|
||||
|
||||
|
||||
void CAChannel::getField(GetFieldRequester::shared_pointer const & requester,
|
||||
std::string const & subField)
|
||||
{
|
||||
@@ -383,12 +376,6 @@ ChannelArray::shared_pointer CAChannel::createChannelArray(
|
||||
}
|
||||
|
||||
|
||||
void CAChannel::printInfo()
|
||||
{
|
||||
printInfo(std::cout);
|
||||
}
|
||||
|
||||
|
||||
void CAChannel::printInfo(std::ostream& out)
|
||||
{
|
||||
out << "CHANNEL : " << getChannelName() << std::endl;
|
||||
@@ -403,21 +390,6 @@ void CAChannel::printInfo(std::ostream& out)
|
||||
}
|
||||
|
||||
|
||||
/* --------------- epics::pvData::Requester --------------- */
|
||||
|
||||
|
||||
string CAChannel::getRequesterName()
|
||||
{
|
||||
return getChannelName();
|
||||
}
|
||||
|
||||
|
||||
void CAChannel::message(std::string const & message,MessageType messageType)
|
||||
{
|
||||
std::cout << "[" << getRequesterName() << "] message(" << message << ", " << getMessageTypeName(messageType) << ")" << std::endl;
|
||||
}
|
||||
|
||||
|
||||
/* --------------- epics::pvData::Destroyable --------------- */
|
||||
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ public:
|
||||
virtual ConnectionState getConnectionState();
|
||||
virtual std::string getChannelName();
|
||||
virtual std::tr1::shared_ptr<ChannelRequester> getChannelRequester();
|
||||
virtual bool isConnected();
|
||||
|
||||
virtual void getField(GetFieldRequester::shared_pointer const & requester,std::string const & subField);
|
||||
|
||||
@@ -81,16 +80,8 @@ public:
|
||||
ChannelArrayRequester::shared_pointer const & channelArrayRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
virtual void printInfo();
|
||||
|
||||
virtual void printInfo(std::ostream& out);
|
||||
|
||||
/* --------------- epics::pvData::Requester --------------- */
|
||||
|
||||
virtual std::string getRequesterName();
|
||||
|
||||
virtual void message(std::string const & message, epics::pvData::MessageType messageType);
|
||||
|
||||
/* --------------- epics::pvData::Destroyable --------------- */
|
||||
|
||||
virtual void destroy();
|
||||
|
||||
@@ -627,6 +627,9 @@ public:
|
||||
|
||||
virtual ~Channel() {}
|
||||
|
||||
virtual std::string getRequesterName();
|
||||
virtual void message(std::string const & message, epics::pvData::MessageType messageType);
|
||||
|
||||
/**
|
||||
* Channel connection status.
|
||||
*/
|
||||
@@ -675,7 +678,7 @@ public:
|
||||
* Is the channel connected?
|
||||
* @return (false,true) means (not, is) connected.
|
||||
*/
|
||||
virtual bool isConnected() = 0;
|
||||
virtual bool isConnected() { return getConnectionState()==CONNECTED; }
|
||||
|
||||
/**
|
||||
* Get a Field which describes the subField.
|
||||
@@ -706,7 +709,7 @@ public:
|
||||
*/
|
||||
virtual ChannelProcess::shared_pointer createChannelProcess(
|
||||
ChannelProcessRequester::shared_pointer const & channelProcessRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Create a ChannelGet.
|
||||
@@ -720,7 +723,7 @@ public:
|
||||
*/
|
||||
virtual ChannelGet::shared_pointer createChannelGet(
|
||||
ChannelGetRequester::shared_pointer const & channelGetRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Create a ChannelPut.
|
||||
@@ -734,7 +737,7 @@ public:
|
||||
*/
|
||||
virtual ChannelPut::shared_pointer createChannelPut(
|
||||
ChannelPutRequester::shared_pointer const & channelPutRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Create a ChannelPutGet.
|
||||
@@ -748,7 +751,7 @@ public:
|
||||
*/
|
||||
virtual ChannelPutGet::shared_pointer createChannelPutGet(
|
||||
ChannelPutGetRequester::shared_pointer const & channelPutGetRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Create a ChannelRPC (Remote Procedure Call).
|
||||
@@ -758,7 +761,7 @@ public:
|
||||
*/
|
||||
virtual ChannelRPC::shared_pointer createChannelRPC(
|
||||
ChannelRPCRequester::shared_pointer const & channelRPCRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Create a Monitor.
|
||||
@@ -769,7 +772,7 @@ public:
|
||||
*/
|
||||
virtual Monitor::shared_pointer createMonitor(
|
||||
MonitorRequester::shared_pointer const & monitorRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Create a ChannelArray.
|
||||
@@ -779,18 +782,18 @@ public:
|
||||
*/
|
||||
virtual ChannelArray::shared_pointer createChannelArray(
|
||||
ChannelArrayRequester::shared_pointer const & channelArrayRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest) = 0;
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest);
|
||||
|
||||
/**
|
||||
* Prints detailed information about the context to the standard output stream.
|
||||
*/
|
||||
virtual void printInfo() = 0;
|
||||
virtual void printInfo() { printInfo(std::cout); }
|
||||
|
||||
/**
|
||||
* Prints detailed information about the context to the specified output stream.
|
||||
* @param out the output stream.
|
||||
*/
|
||||
virtual void printInfo(std::ostream& out) = 0;
|
||||
virtual void printInfo(std::ostream& out) {}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -7,10 +7,98 @@
|
||||
#define epicsExportSharedSymbols
|
||||
#include <pv/pvAccess.h>
|
||||
|
||||
namespace pvd = epics::pvData;
|
||||
|
||||
namespace epics {
|
||||
namespace pvAccess {
|
||||
|
||||
const char* Channel::ConnectionStateNames[] = { "NEVER_CONNECTED", "CONNECTED", "DISCONNECTED", "DESTROYED" };
|
||||
|
||||
std::string Channel::getRequesterName()
|
||||
{
|
||||
std::tr1::shared_ptr<ChannelRequester> req(getChannelRequester());
|
||||
return req ? req->getRequesterName() : std::string("<Destroy'd Channel>");
|
||||
}
|
||||
|
||||
void Channel::message(std::string const & message, epics::pvData::MessageType messageType)
|
||||
{
|
||||
std::tr1::shared_ptr<ChannelRequester> req(getChannelRequester());
|
||||
if(req) {
|
||||
req->message(message, messageType);
|
||||
} else {
|
||||
std::cerr<<epics::pvData::getMessageTypeName(messageType)
|
||||
<<": on Destroy'd Channel \""<<getChannelName()
|
||||
<<"\" : "<<message;
|
||||
}
|
||||
}
|
||||
|
||||
ChannelProcess::shared_pointer Channel::createChannelProcess(
|
||||
ChannelProcessRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
ChannelProcess::shared_pointer ret;
|
||||
requester->channelProcessConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"), ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ChannelGet::shared_pointer Channel::createChannelGet(
|
||||
ChannelGetRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
ChannelGet::shared_pointer ret;
|
||||
requester->channelGetConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"),
|
||||
ret, pvd::StructureConstPtr());
|
||||
return ret;
|
||||
}
|
||||
|
||||
ChannelPut::shared_pointer Channel::createChannelPut(
|
||||
ChannelPutRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
ChannelPut::shared_pointer ret;
|
||||
requester->channelPutConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"),
|
||||
ret, pvd::StructureConstPtr());
|
||||
return ret;
|
||||
}
|
||||
|
||||
ChannelPutGet::shared_pointer Channel::createChannelPutGet(
|
||||
ChannelPutGetRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
ChannelPutGet::shared_pointer ret;
|
||||
requester->channelPutGetConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"),
|
||||
ret, pvd::StructureConstPtr(), pvd::StructureConstPtr());
|
||||
return ret;
|
||||
}
|
||||
|
||||
ChannelRPC::shared_pointer Channel::createChannelRPC(
|
||||
ChannelRPCRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
ChannelRPC::shared_pointer ret;
|
||||
requester->channelRPCConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"), ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
pvd::Monitor::shared_pointer Channel::createMonitor(
|
||||
epics::pvData::MonitorRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
pvd::Monitor::shared_pointer ret;
|
||||
requester->monitorConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"),
|
||||
ret, pvd::StructureConstPtr());
|
||||
return ret;
|
||||
}
|
||||
|
||||
ChannelArray::shared_pointer Channel::createChannelArray(
|
||||
ChannelArrayRequester::shared_pointer const & requester,
|
||||
epics::pvData::PVStructure::shared_pointer const & pvRequest)
|
||||
{
|
||||
ChannelArray::shared_pointer ret;
|
||||
requester->channelArrayConnect(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not Implemented"),
|
||||
ret, pvd::Array::const_shared_pointer());
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,9 +189,6 @@ class RPCChannel :
|
||||
{
|
||||
private:
|
||||
|
||||
static Status notSupportedStatus;
|
||||
static Status destroyedStatus;
|
||||
|
||||
AtomicBoolean m_destroyed;
|
||||
|
||||
ChannelProvider::shared_pointer m_provider;
|
||||
@@ -233,7 +230,7 @@ public:
|
||||
|
||||
virtual ConnectionState getConnectionState()
|
||||
{
|
||||
return isConnected() ?
|
||||
return (!m_destroyed.get()) ?
|
||||
Channel::CONNECTED :
|
||||
Channel::DESTROYED;
|
||||
}
|
||||
@@ -248,12 +245,6 @@ public:
|
||||
return m_channelRequester;
|
||||
}
|
||||
|
||||
virtual bool isConnected()
|
||||
{
|
||||
return !m_destroyed.get();
|
||||
}
|
||||
|
||||
|
||||
virtual AccessRights getAccessRights(epics::pvData::PVField::shared_pointer const & /*pvField*/)
|
||||
{
|
||||
return none;
|
||||
@@ -261,47 +252,8 @@ public:
|
||||
|
||||
virtual void getField(GetFieldRequester::shared_pointer const & requester,std::string const & /*subField*/)
|
||||
{
|
||||
requester->getDone(notSupportedStatus, epics::pvData::Field::shared_pointer());
|
||||
}
|
||||
|
||||
virtual ChannelProcess::shared_pointer createChannelProcess(
|
||||
ChannelProcessRequester::shared_pointer const & channelProcessRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/)
|
||||
{
|
||||
ChannelProcess::shared_pointer nullPtr;
|
||||
channelProcessRequester->channelProcessConnect(notSupportedStatus, nullPtr);
|
||||
return nullPtr;
|
||||
}
|
||||
|
||||
virtual ChannelGet::shared_pointer createChannelGet(
|
||||
ChannelGetRequester::shared_pointer const & channelGetRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/)
|
||||
{
|
||||
ChannelGet::shared_pointer nullPtr;
|
||||
channelGetRequester->channelGetConnect(notSupportedStatus, nullPtr,
|
||||
epics::pvData::Structure::const_shared_pointer());
|
||||
return nullPtr;
|
||||
}
|
||||
|
||||
virtual ChannelPut::shared_pointer createChannelPut(
|
||||
ChannelPutRequester::shared_pointer const & channelPutRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/)
|
||||
{
|
||||
ChannelPut::shared_pointer nullPtr;
|
||||
channelPutRequester->channelPutConnect(notSupportedStatus, nullPtr,
|
||||
epics::pvData::Structure::const_shared_pointer());
|
||||
return nullPtr;
|
||||
}
|
||||
|
||||
|
||||
virtual ChannelPutGet::shared_pointer createChannelPutGet(
|
||||
ChannelPutGetRequester::shared_pointer const & channelPutGetRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/)
|
||||
{
|
||||
ChannelPutGet::shared_pointer nullPtr;
|
||||
epics::pvData::Structure::const_shared_pointer nullStructure;
|
||||
channelPutGetRequester->channelPutGetConnect(notSupportedStatus, nullPtr, nullStructure, nullStructure);
|
||||
return nullPtr;
|
||||
requester->getDone(epics::pvData::Status(epics::pvData::Status::STATUSTYPE_ERROR, "Only RPC is implemented"),
|
||||
epics::pvData::Field::shared_pointer());
|
||||
}
|
||||
|
||||
virtual ChannelRPC::shared_pointer createChannelRPC(
|
||||
@@ -316,7 +268,7 @@ public:
|
||||
if (m_destroyed.get())
|
||||
{
|
||||
ChannelRPC::shared_pointer nullPtr;
|
||||
channelRPCRequester->channelRPCConnect(destroyedStatus, nullPtr);
|
||||
channelRPCRequester->channelRPCConnect(epics::pvData::Status(epics::pvData::Status::STATUSTYPE_ERROR, "channel destroyed"), nullPtr);
|
||||
return nullPtr;
|
||||
}
|
||||
|
||||
@@ -329,30 +281,6 @@ public:
|
||||
return channelRPCImpl;
|
||||
}
|
||||
|
||||
virtual epics::pvData::Monitor::shared_pointer createMonitor(
|
||||
epics::pvData::MonitorRequester::shared_pointer const & monitorRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/)
|
||||
{
|
||||
epics::pvData::Monitor::shared_pointer nullPtr;
|
||||
monitorRequester->monitorConnect(notSupportedStatus, nullPtr, epics::pvData::Structure::shared_pointer());
|
||||
return nullPtr;
|
||||
}
|
||||
|
||||
virtual ChannelArray::shared_pointer createChannelArray(
|
||||
ChannelArrayRequester::shared_pointer const & channelArrayRequester,
|
||||
epics::pvData::PVStructure::shared_pointer const & /*pvRequest*/)
|
||||
{
|
||||
ChannelArray::shared_pointer nullPtr;
|
||||
channelArrayRequester->channelArrayConnect(notSupportedStatus, nullPtr, epics::pvData::Array::const_shared_pointer());
|
||||
return nullPtr;
|
||||
}
|
||||
|
||||
|
||||
virtual void printInfo()
|
||||
{
|
||||
printInfo(std::cout);
|
||||
}
|
||||
|
||||
virtual void printInfo(std::ostream& out)
|
||||
{
|
||||
out << "RPCChannel: ";
|
||||
@@ -367,21 +295,12 @@ public:
|
||||
return getChannelName();
|
||||
}
|
||||
|
||||
virtual void message(std::string const & message,MessageType messageType)
|
||||
{
|
||||
// just delegate
|
||||
m_channelRequester->message(message, messageType);
|
||||
}
|
||||
|
||||
virtual void destroy()
|
||||
{
|
||||
m_destroyed.set();
|
||||
}
|
||||
};
|
||||
|
||||
Status RPCChannel::notSupportedStatus(Status::STATUSTYPE_ERROR, "only channelRPC requests are supported by this channel");
|
||||
Status RPCChannel::destroyedStatus(Status::STATUSTYPE_ERROR, "channel destroyed");
|
||||
|
||||
Channel::shared_pointer createRPCChannel(ChannelProvider::shared_pointer const & provider,
|
||||
std::string const & channelName,
|
||||
ChannelRequester::shared_pointer const & channelRequester,
|
||||
|
||||
Reference in New Issue
Block a user