4 #ifndef DATA_DISTRIBUTOR_PLUGIN_H 5 #define DATA_DISTRIBUTOR_PLUGIN_H 14 #include <pv/pvData.h> 19 namespace epics {
namespace pvCopy {
21 class DataDistributorPlugin;
22 class DataDistributorFilter;
37 ClientSet(
const std::string& setId_,
const std::string triggerField_,
int nUpdatesPerClient_,
int updateMode_)
62 DD_UPDATE_ONE_PER_GROUP = 0,
63 DD_UPDATE_ALL_IN_GROUP = 1,
67 static DataDistributorPtr getInstance(
const std::string& groupId);
68 static void removeUnusedInstance(DataDistributorPtr dataDistributorPtr);
73 void removeClient(
int clientId,
const std::string& setId);
74 bool updateClient(
int clientId,
const std::string& setId,
const std::string& triggerFieldValue);
81 static std::map<std::string, DataDistributorPtr> dataDistributorMap;
82 static epics::pvData::Mutex dataDistributorMapMutex;
85 epics::pvData::Mutex mutex;
86 std::map<std::string, ClientSetPtr> clientSetMap;
87 std::list<std::string> clientSetIdList;
88 std::list<std::string>::iterator currentSetIdIter;
102 static void create();
112 const std::string& requestValue,
114 const epics::pvData::PVFieldPtr& master);
116 static bool initialize();
117 static bool initialized;
126 DataDistributorPtr dataDistributorPtr;
130 epics::pvData::PVFieldPtr masterFieldPtr;
131 epics::pvData::PVFieldPtr triggerFieldPtr;
146 static DataDistributorFilterPtr create(
147 const std::string& requestValue,
149 const epics::pvData::PVFieldPtr & master);
158 bool filter(
const epics::pvData::PVFieldPtr & pvCopy,
const epics::pvData::BitSetPtr & bitSet,
bool toCopy);
163 std::string getName();
std::tr1::shared_ptr< PVFilter > PVFilterPtr
std::string lastUpdateValue
std::tr1::shared_ptr< PVCopy > PVCopyPtr
std::tr1::shared_ptr< ClientSet > ClientSetPtr
A filter plugin that attaches to a field of a PVStrcture.
POINTER_DEFINITIONS(ClientSet)
ClientSet(const std::string &setId_, const std::string triggerField_, int nUpdatesPerClient_, int updateMode_)
std::string getGroupId() const
A Plugin for a filter that gets a sub array from a PVScalarDeadband.
std::tr1::shared_ptr< DataDistributorFilter > DataDistributorFilterPtr
std::list< int >::iterator currentClientIdIter
std::tr1::shared_ptr< DataDistributor > DataDistributorPtr
std::list< int > clientIdList
A Filter that is called when a copy PVStructure is being updated.
std::tr1::shared_ptr< DataDistributorPlugin > DataDistributorPluginPtr
std::tr1::shared_ptr< const ClientSet > ClientSetConstPtr