5 #include "tools/Guard.h"
8 #include "engine/EngineConfig.h"
9 #include "engine/ScanList.h"
10 #include "engine/ProcessVariableContext.h"
12 #include "engine/GroupInfo.h"
13 #include "engine/ArchiveChannel.h"
14 #include "engine/ArchiveChannelStateListener.h"
25 Engine(
const std::string& index_name);
45 virtual void addChannel(
const std::string& group_name,
46 const std::string& channel_name,
158 epicsTime start_time;
159 stdString index_name;
160 stdString description;
166 stdList<GroupInfo *> groups;
167 stdList<ArchiveChannel *> channels;
169 double write_duration;
171 double process_delay_avg;
172 epicsTime next_write_time;
177 inline const std::string&
184 this->description = description;
187 inline const std::string&
192 inline const epicsTime&
197 inline const epicsTime&
199 return next_write_time;
204 Guard ctx_guard(__FILE__, __LINE__, pv_context);
205 pv_context.
attach(ctx_guard);
211 return write_duration;
221 return process_delay_avg;
237 inline const stdList<GroupInfo *>&
242 inline const stdList<ArchiveChannel *>&
virtual unsigned long write(Guard &guard)=0
Write all current buffers to disk.
ArchiveChannel * findChannel(Guard &engine_guard, const std::string &name)
size_t getNumConnected(Guard &guard) const
virtual void write_config(Guard &guard)
Write a new config file.
size_t getWriteCount(Guard &guard) const
Definition: Engine.h:215
const stdList< GroupInfo * > & getGroups(Guard &guard) const
Definition: Engine.h:238
virtual void read_config(Guard &guard, const std::string &file_name)=0
Read the given config file.
A mutex with informational name and lock order.
Definition: OrderedMutex.h:34
virtual OrderedMutex & getMutex()
Guardable interface.
void stop(Guard &guard)
Stop sampling.
const stdList< ArchiveChannel * > & getChannels(Guard &guard) const
Definition: Engine.h:243
The base class of the archive engines.
Definition: Engine.h:18
GroupInfo * findGroup(Guard &engine_guard, const std::string &name)
const std::string & getDescription(Guard &guard) const
Definition: Engine.h:188
void start(Guard &guard)
Start the sample mechanism.
static const double MAX_DELAY
max delay
Definition: Engine.h:22
Global engine configuration parameters.
Definition: EngineConfig.h:14
const epicsTime & getNextWriteTime(Guard &guard) const
Definition: Engine.h:198
bool process()
Main process routine.
Automatically takes and releases an epicsMutex.
Definition: Guard.h:63
void attachToProcessVariableContext(Guard &guard)
Join the engine's ProcessVariableContext.
Definition: Engine.h:203
Modifyable global engine configuration parameters.
Definition: EngineConfig.h:87
Interface for something that can be protected by a Guard.
Definition: Guard.h:49
Context for ProcessVariable instances.
Definition: ProcessVariableContext.h:18
const epicsTime & getStartTime(Guard &guard) const
Definition: Engine.h:193
WritableEngineConfig & getWritableConfig(Guard &guard)
Definition: Engine.h:231
Reads the config from an XML file that should conform to engineconfig.dtd.
Definition: EngineConfig.h:142
One archived channel.
Definition: ArchiveChannel.h:19
void setDescription(Guard &guard, const std::string &description)
Set the description string.
Definition: Engine.h:183
void attach(Guard &guard)
Attach current thread to this context.
const std::string & getIndexName(Guard &guard) const
Definition: Engine.h:178
GroupInfo * addGroup(Guard &guard, const std::string &group_name)
Add a group.
double getProcessDelayAvg(Guard &guard) const
Definition: Engine.h:220
A ScanList keeps track of Scannable items.
Definition: ScanList.h:43
const EngineConfig & getConfig(Guard &guard) const
Definition: Engine.h:226
virtual void addChannel(const std::string &group_name, const std::string &channel_name, double scan_period, bool disabling, bool monitor)=0
Add a channel.
virtual ~Engine()
Destructor.
A Group of channels.
Definition: GroupInfo.h:42
Listener to EngineConfigParser.
Definition: EngineConfig.h:124
bool isRunning(Guard &guard) const
Definition: Engine.h:250
double getWriteDuration(Guard &guard) const
Definition: Engine.h:210
Engine(const std::string &index_name)
Create Engine that writes to given index.