@ -26,8 +26,8 @@ namespace epics { namespace pvCopy {
|
|||||||
// Utilities for manipulating strings
|
// Utilities for manipulating strings
|
||||||
static std::string leftTrim(const std::string& s)
|
static std::string leftTrim(const std::string& s)
|
||||||
{
|
{
|
||||||
int i;
|
unsigned int i;
|
||||||
int n = s.length();
|
unsigned int n = (unsigned int)s.length();
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
if (!isspace(s[i])) {
|
if (!isspace(s[i])) {
|
||||||
break;
|
break;
|
||||||
@ -38,8 +38,8 @@ static std::string leftTrim(const std::string& s)
|
|||||||
|
|
||||||
static std::string rightTrim(const std::string& s)
|
static std::string rightTrim(const std::string& s)
|
||||||
{
|
{
|
||||||
int i;
|
unsigned int i;
|
||||||
int n = s.length();
|
unsigned int n = (unsigned int)s.length();
|
||||||
for (i = n; i > 0; i--) {
|
for (i = n; i > 0; i--) {
|
||||||
if (!isspace(s[i-1])) {
|
if (!isspace(s[i-1])) {
|
||||||
break;
|
break;
|
||||||
@ -83,7 +83,7 @@ static std::string toLowerCase(const std::string& input)
|
|||||||
// Data distributor class
|
// Data distributor class
|
||||||
|
|
||||||
static std::string name("distributor");
|
static std::string name("distributor");
|
||||||
bool DataDistributorPlugin::initialized(DataDistributorPlugin::initialize());
|
bool DataDistributorPlugin::initialized(false);
|
||||||
|
|
||||||
std::map<std::string, DataDistributorPtr> DataDistributor::dataDistributorMap;
|
std::map<std::string, DataDistributorPtr> DataDistributor::dataDistributorMap;
|
||||||
epics::pvData::Mutex DataDistributor::dataDistributorMapMutex;
|
epics::pvData::Mutex DataDistributor::dataDistributorMapMutex;
|
||||||
@ -110,7 +110,7 @@ void DataDistributor::removeUnusedInstance(DataDistributorPtr dataDistributorPtr
|
|||||||
std::map<std::string,DataDistributorPtr>::iterator ddit = dataDistributorMap.find(groupId);
|
std::map<std::string,DataDistributorPtr>::iterator ddit = dataDistributorMap.find(groupId);
|
||||||
if (ddit != dataDistributorMap.end()) {
|
if (ddit != dataDistributorMap.end()) {
|
||||||
DataDistributorPtr ddPtr = ddit->second;
|
DataDistributorPtr ddPtr = ddit->second;
|
||||||
int nSets = ddPtr->clientSetMap.size();
|
size_t nSets = ddPtr->clientSetMap.size();
|
||||||
if (nSets == 0) {
|
if (nSets == 0) {
|
||||||
dataDistributorMap.erase(ddit);
|
dataDistributorMap.erase(ddit);
|
||||||
}
|
}
|
||||||
@ -275,8 +275,11 @@ void DataDistributorPlugin::create()
|
|||||||
|
|
||||||
bool DataDistributorPlugin::initialize()
|
bool DataDistributorPlugin::initialize()
|
||||||
{
|
{
|
||||||
|
if (!initialized) {
|
||||||
|
initialized = true;
|
||||||
DataDistributorPluginPtr pvPlugin = DataDistributorPluginPtr(new DataDistributorPlugin());
|
DataDistributorPluginPtr pvPlugin = DataDistributorPluginPtr(new DataDistributorPlugin());
|
||||||
PVPluginRegistry::registerPlugin(name,pvPlugin);
|
PVPluginRegistry::registerPlugin(name,pvPlugin);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,7 +409,7 @@ bool DataDistributorFilter::filter(const PVFieldPtr& pvCopy, const BitSetPtr& bi
|
|||||||
|
|
||||||
if(proceedWithUpdate) {
|
if(proceedWithUpdate) {
|
||||||
pvCopy->copyUnchecked(*masterFieldPtr);
|
pvCopy->copyUnchecked(*masterFieldPtr);
|
||||||
bitSet->set(pvCopy->getFieldOffset());
|
bitSet->set((unsigned int)pvCopy->getFieldOffset());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Clear all bits
|
// Clear all bits
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "pv/pvArrayPlugin.h"
|
#include "pv/pvArrayPlugin.h"
|
||||||
#include "pv/pvTimestampPlugin.h"
|
#include "pv/pvTimestampPlugin.h"
|
||||||
#include "pv/pvDeadbandPlugin.h"
|
#include "pv/pvDeadbandPlugin.h"
|
||||||
|
#include "pv/dataDistributorPlugin.h"
|
||||||
|
|
||||||
using std::tr1::static_pointer_cast;
|
using std::tr1::static_pointer_cast;
|
||||||
using namespace epics::pvData;
|
using namespace epics::pvData;
|
||||||
@ -44,6 +45,7 @@ PVDatabasePtr PVDatabase::getMaster()
|
|||||||
PVArrayPlugin::create();
|
PVArrayPlugin::create();
|
||||||
PVTimestampPlugin::create();
|
PVTimestampPlugin::create();
|
||||||
PVDeadbandPlugin::create();
|
PVDeadbandPlugin::create();
|
||||||
|
DataDistributorPlugin::create();
|
||||||
}
|
}
|
||||||
return pvDatabaseMaster;
|
return pvDatabaseMaster;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user