This is Unofficial EPICS BASE Doxygen Site
epics::pvDatabase::MonitorElementQueue Class Reference

Public Member Functions

 POINTER_DEFINITIONS (MonitorElementQueue)
 
 MonitorElementQueue (std::vector< MonitorElementPtr > monitorElementArray)
 
virtual ~MonitorElementQueue ()
 
void clear ()
 
MonitorElementPtr getFree ()
 
void setUsed (MonitorElementPtr const &element)
 
MonitorElementPtr getUsed ()
 
void releaseUsed (MonitorElementPtr const &element)
 

Detailed Description

Definition at line 53 of file monitorFactory.cpp.

Constructor & Destructor Documentation

epics::pvDatabase::MonitorElementQueue::MonitorElementQueue ( std::vector< MonitorElementPtr monitorElementArray)
inline

Definition at line 68 of file monitorFactory.cpp.

69  : elements(monitorElementArray),
70  size(monitorElementArray.size()),
71  numberFree(size),
72  numberUsed(0),
73  nextGetFree(0),
74  nextSetUsed(0),
75  nextGetUsed(0),
76  nextReleaseUsed(0)
77  {
78  }
virtual epics::pvDatabase::MonitorElementQueue::~MonitorElementQueue ( )
inlinevirtual

Definition at line 80 of file monitorFactory.cpp.

80 {}

Member Function Documentation

void epics::pvDatabase::MonitorElementQueue::clear ( )
inline

Definition at line 82 of file monitorFactory.cpp.

83  {
84  numberFree = size;
85  numberUsed = 0;
86  nextGetFree = 0;
87  nextSetUsed = 0;
88  nextGetUsed = 0;
89  nextReleaseUsed = 0;
90  }
MonitorElementPtr epics::pvDatabase::MonitorElementQueue::getFree ( )
inline

Definition at line 92 of file monitorFactory.cpp.

93  {
94  if(numberFree==0) return MonitorElementPtr();
95  numberFree--;
96  int ind = nextGetFree;
97  MonitorElementPtr queueElement = elements[nextGetFree++];
98  if(nextGetFree>=size) nextGetFree = 0;
99  return elements[ind];
100  }
std::tr1::shared_ptr< MonitorElement > MonitorElementPtr
Definition: monitor.h:40
MonitorElementPtr epics::pvDatabase::MonitorElementQueue::getUsed ( )
inline

Definition at line 111 of file monitorFactory.cpp.

112  {
113  if(numberUsed==0) return MonitorElementPtr();
114  int ind = nextGetUsed;
115  MonitorElementPtr queueElement = elements[nextGetUsed++];
116  if(nextGetUsed>=size) nextGetUsed = 0;
117  return elements[ind];
118  }
std::tr1::shared_ptr< MonitorElement > MonitorElementPtr
Definition: monitor.h:40
epics::pvDatabase::MonitorElementQueue::POINTER_DEFINITIONS ( MonitorElementQueue  )
void epics::pvDatabase::MonitorElementQueue::releaseUsed ( MonitorElementPtr const &  element)
inline

Definition at line 119 of file monitorFactory.cpp.

120  {
121  if(element!=elements[nextReleaseUsed++]) {
122  throw std::logic_error(
123  "not queueElement returned by last call to getUsed");
124  }
125  if(nextReleaseUsed>=size) nextReleaseUsed = 0;
126  numberUsed--;
127  numberFree++;
128  }
void epics::pvDatabase::MonitorElementQueue::setUsed ( MonitorElementPtr const &  element)
inline

Definition at line 102 of file monitorFactory.cpp.

103  {
104  if(element!=elements[nextSetUsed++]) {
105  throw std::logic_error("not correct queueElement");
106  }
107  numberUsed++;
108  if(nextSetUsed>=size) nextSetUsed = 0;
109  }

The documentation for this class was generated from the following file: