67 {
return m_sections.length(); }
73 inline unsigned int count()
const
74 {
return m_sections.count(); }
119 int minvalue = INT_MIN,
int maxvalue = INT_MAX,
bool clamp =
true)
const;
143 int64_t minvalue = LLONG_MIN, int64_t maxvalue = LLONG_MAX,
bool clamp =
true)
const;
231 bool loadFile(
const char* file,
String sect,
unsigned int depth,
bool warn);
246 :
Mutex(false,
"SharedVars"), m_vars(
"")
290 unsigned int inc(
const String& name,
unsigned int wrap = 0);
298 unsigned int dec(
const String& name,
unsigned int wrap = 0);
323 explicit Message(
const char* name,
const char* retval = 0,
bool broadcast =
false);
387 {
return m_data ? m_data->getObject(name) : 0; }
396 { m_notify = notify; }
403 {
return m_broadcast; }
459 int decode(
const char* str,
bool& received,
const char*
id);
478 void commonEncode(
String& str)
const;
479 int commonDecode(
const char* str,
int offs);
501 const char* trackName = 0,
bool addPriority =
true);
525 {
return m_priority; }
532 {
return m_trackName; }
540 {
if (!m_dispatcher) m_trackName = name; }
547 {
return m_counter; }
559 {
return m_filterRegexp; }
573 inline void setFilter(
const char* name,
const char* value)
644 int priority = 100,
const char* trackName = 0,
bool addPriority =
true)
646 m_receiver(receiver), m_id(id)
656 {
return m_receiver && m_receiver->received(msg,m_id); }
662 inline int id()
const
736 {
return m_trackParam; }
791 { m_warnTime = usec; }
797 { m_handlers.clear(); m_hookAppend = &m_hooks; m_hooks.clear(); }
804 {
return m_messages.get() || m_messages.next(); }
811 {
return m_handlers.get() || m_handlers.next(); }
818 {
return m_hooks.get() || m_hooks.next(); }
843 {
return m_enqueueCount; }
850 {
return m_dequeueCount; }
857 {
return m_dispatchCount; }
864 {
return m_queuedMax; }
872 {
return usec ? m_msgAvgAge : ((m_msgAvgAge + 500) / 1000); }
881 void getStats(u_int64_t& enqueued, u_int64_t& dequeued, u_int64_t& dispatched, u_int64_t& queueMax);
896 { m_trackParam = paramName; }
906 unsigned int m_changes;
907 u_int64_t m_warnTime;
908 u_int64_t m_enqueueCount;
909 u_int64_t m_dequeueCount;
910 u_int64_t m_dispatchCount;
911 u_int64_t m_queuedMax;
912 u_int64_t m_msgAvgAge;
1015 {
return m_filters; }
1037 unsigned int m_count;
1059 explicit Plugin(
const char* name,
bool earlyInit =
false);
1106 {
return m_counter; }
1137#define INIT_PLUGIN(pclass) static pclass __plugin
1138#ifdef DISABLE_UNLOAD
1139#define UNLOAD_PLUGIN(arg) static bool _unused_unload(bool arg)
1142#define UNLOAD_PLUGIN(arg) extern "C" __declspec(dllexport) bool _unload(bool arg)
1144#define UNLOAD_PLUGIN(arg) extern "C" bool _unload(bool arg)
1191 friend class EnginePrivate;
1192 friend class EngineCommand;
1235 static int main(
int argc,
const char** argv,
const char** env,
1236 RunMode mode = Console, EngineLoop loop = 0,
bool fail =
false);
1243 static void help(
bool client,
bool errout =
false);
1281 return (s_congestion && (s_accept < Congestion)) ? Congestion : s_accept;
1297 return s_callAccept;
1311 {
return s_congestion; }
1318 {
return (s_mode ==
Client) || (s_mode == ClientProxy); }
1340 {
return s_shrpath; }
1362 {
return s_cfgsuffix; }
1368 {
return s_modpath; }
1390 {
return s_modsuffix; }
1418 {
return s_params; }
1436 static void halt(
unsigned int code);
1444 static bool restart(
unsigned int code,
bool gracefull =
false);
1451 {
return s_started; }
1458 {
return (s_haltcode != -1); }
1489 inline static bool enqueue(
const char* name,
bool broadcast =
false)
1490 {
return name && *name && enqueue(
new Message(name,0,broadcast)); }
1513 static bool dispatch(
const char* name,
bool broadcast =
false);
1521 { m_dispatcher.setHook(hook,remove); }
1528 {
return s_self ? s_self->m_dispatcher.trackParam() :
String::empty(); }
1554 {
return m_dispatcher.messageCount(); }
1561 {
return m_dispatcher.handlerCount(); }
1568 {
return m_dispatcher.postHookCount(); }
1575 {
return m_messageRate; }
1582 {
return m_maxMsgRate; }
1590 {
return (
unsigned int)m_dispatcher.messageAge(usec); }
1599 inline void getStats(u_int64_t& enqueued, u_int64_t& dequeued, u_int64_t& dispatched, u_int64_t& queueMax)
1600 { m_dispatcher.getStats(enqueued,dequeued,dispatched,queueMax); }
1606 { m_maxMsgRate = m_messageRate; m_dispatcher.m_queuedMax = m_dispatcher.messageCount(); }
1614 {
return !!m_libs[name]; }
1687 bool loadPlugin(
const char* file,
bool local =
false,
bool nounload =
false);
1701 void internalStatisticsStart();
1702 void tryPluginFile(
const String& name,
const String& path,
bool defload);
1705 uint64_t m_dispatchedLast;
1706 unsigned int m_messageRate;
1707 unsigned int m_maxMsgRate;
1708 bool m_rateCongested;
1709 bool m_queueCongested;
1710 bool m_ageCongested;
1714 static String s_cfgsuffix;
1716 static String s_modsuffix;
1719 static int s_haltcode;
1721 static bool s_started;
1722 static unsigned int s_congestion;
1723 static CallAccept s_accept;
A holder for a debug level.
Definition yateclass.h:312
Definition yateclass.h:1049
Mutex support.
Definition yateclass.h:5607
Atomic counter with name.
Definition yateclass.h:3602
A named string container class.
Definition yateclass.h:5016
A named string class.
Definition yateclass.h:3481
An object list class.
Definition yateclass.h:1454
ObjList * next() const
Definition yateclass.h:1505
GenObject * get() const
Definition yateclass.h:1490
unsigned int count() const
unsigned int length() const
Definition yateclass.h:1174
virtual void * getObject(const String &name) const
A regexp matching class.
Definition yateclass.h:3271
A C-style string handling class.
Definition yateclass.h:2131
String & operator=(const String &value)
Definition yateclass.h:2567
static const String & empty()
Class that runs the User Interface.
Definition yatecbase.h:994
Configuration file handling.
Definition yatengine.h:41
bool load(bool warn=true)
NamedString * getKey(const String §, const String &key) const
void clearSection(const char *sect=0)
int getIntValue(const String §, const String &key, int defvalue=0, int minvalue=INT_MIN, int maxvalue=INT_MAX, bool clamp=true) const
double getDoubleValue(const String §, const String &key, double defvalue=0.0) const
int64_t getInt64Value(const String §, const String &key, int64_t defvalue=0, int64_t minvalue=LLONG_MIN, int64_t maxvalue=LLONG_MAX, bool clamp=true) const
int getIntValue(const String §, const String &key, const TokenDict *tokens, int defvalue=0) const
NamedList * getSection(unsigned int index) const
NamedList * getSection(const String §) const
void clearKey(const String §, const String &key)
void addValue(const String §, const char *key, const char *value=0)
bool getBoolValue(const String §, const String &key, bool defvalue=false) const
Configuration & operator=(const String &value)
Definition yatengine.h:59
void setValue(const String §, const char *key, int value)
NamedList * createSection(const String §)
void setValue(const String §, const char *key, const char *value=0)
unsigned int sections() const
Definition yatengine.h:66
Configuration(const char *filename, bool warn=true)
void setValue(const String §, const char *key, bool value)
unsigned int count() const
Definition yatengine.h:73
const char * getValue(const String §, const String &key, const char *defvalue=0) const
Engine checker interface.
Definition yatengine.h:1155
virtual bool check(const ObjList *cmds)=0
virtual ~EngineCheck()
Definition yatengine.h:1160
static void setChecker(EngineCheck *ptr=0)
Engine globals.
Definition yatengine.h:1190
static bool clientMode()
Definition yatengine.h:1317
static RunMode mode()
Definition yatengine.h:1273
static void halt(unsigned int code)
bool loadPluginDir(const String &relPath)
void setHook(MessagePostHook *hook, bool remove=false)
Definition yatengine.h:1520
static const Configuration & config()
static void clearEvents(const String &type)
void resetMax()
Definition yatengine.h:1605
static const String & nodeName()
Definition yatengine.h:1332
static const String & sharedPath()
Definition yatengine.h:1339
bool loadPlugin(const char *file, bool local=false, bool nounload=false)
RunMode
Definition yatengine.h:1198
static void help(bool client, bool errout=false)
static const String & moduleSuffix()
Definition yatengine.h:1389
static const char * pathSeparator()
unsigned int handlerCount()
Definition yatengine.h:1560
static const TokenDict * getCallAcceptStates()
Definition yatengine.h:1296
static bool uninstall(MessageHandler *handler)
unsigned int messageRate() const
Definition yatengine.h:1574
static void uninstallHook(MessageHook *hook)
static const ObjList * events(const String &type)
static int main(int argc, const char **argv, const char **env, RunMode mode=Console, EngineLoop loop=0, bool fail=false)
static bool restart(unsigned int code, bool gracefull=false)
static void pluginMode(PluginMode mode)
static bool init(const String &name)
static bool install(MessageHandler *handler)
static bool installHook(MessageHook *hook)
PluginMode
Definition yatengine.h:1219
static CallAccept accept()
Definition yatengine.h:1280
static void extraPath(const String &path)
static bool dispatch(const char *name, bool broadcast=false)
static void userPath(const String &path)
void getStats(u_int64_t &enqueued, u_int64_t &dequeued, u_int64_t &dispatched, u_int64_t &queueMax)
Definition yatengine.h:1599
bool pluginLoaded(const String &name) const
Definition yatengine.h:1613
static bool dispatch(Message &msg)
static const String & trackParam()
Definition yatengine.h:1527
unsigned int postHookCount()
Definition yatengine.h:1567
unsigned int messageAge(bool usec=false) const
Definition yatengine.h:1589
static void buildCmdLine(String &line)
static bool dispatch(Message *msg)
static const String & configSuffix()
Definition yatengine.h:1361
static void initLibrary(const String &line, String *output=0)
unsigned int messageMaxRate() const
Definition yatengine.h:1581
static const String & configPath(bool user=false)
static const String & modulePath()
Definition yatengine.h:1367
static unsigned int getCongestion()
Definition yatengine.h:1310
static int cleanupLibrary()
unsigned int messageCount()
Definition yatengine.h:1553
static SharedVars & sharedVars()
static String configFile(const char *name, bool user=false)
static void setAccept(CallAccept ca)
Definition yatengine.h:1288
static bool enqueue(const char *name, bool broadcast=false)
Definition yatengine.h:1489
static bool started()
Definition yatengine.h:1450
static void setCongestion(const char *reason=0)
static bool exiting()
Definition yatengine.h:1457
static bool Register(const Plugin *plugin, bool reg=true)
static unsigned int runId()
static bool enqueue(Message *msg, bool skipHooks=false)
static const NamedList & runParams()
Definition yatengine.h:1417
A message dispatching hub.
Definition yatengine.h:716
bool hasMessages() const
Definition yatengine.h:803
void warnTime(u_int64_t usec)
Definition yatengine.h:790
const String & trackParam() const
Definition yatengine.h:735
void setHook(MessagePostHook *hook, bool remove=false)
bool enqueue(Message *msg)
u_int64_t messageAge(bool usec=false) const
Definition yatengine.h:871
bool install(MessageHandler *handler)
u_int64_t queuedMax() const
Definition yatengine.h:863
unsigned int handlerCount()
u_int64_t dequeueCount() const
Definition yatengine.h:849
u_int64_t enqueueCount() const
Definition yatengine.h:842
void trackParam(const char *paramName)
Definition yatengine.h:895
MessageDispatcher(const char *trackParam=0)
bool uninstall(MessageHandler *handler)
void getStats(u_int64_t &enqueued, u_int64_t &dequeued, u_int64_t &dispatched, u_int64_t &queueMax)
bool hasHooks() const
Definition yatengine.h:817
unsigned int postHookCount()
bool hasHandlers() const
Definition yatengine.h:810
bool dispatch(Message &msg)
void clear()
Definition yatengine.h:796
u_int64_t dispatchCount() const
Definition yatengine.h:856
unsigned int messageCount()
A message handler.
Definition yatengine.h:489
const Regexp * filterRegexp() const
Definition yatengine.h:558
void setFilter(NamedString *filter)
virtual ~MessageHandler()
virtual bool received(Message &msg)=0
const String & trackName() const
Definition yatengine.h:531
const NamedString * filter() const
Definition yatengine.h:552
unsigned priority() const
Definition yatengine.h:524
void setFilter(const char *name, const char *value)
Definition yatengine.h:573
void trackName(const char *name)
Definition yatengine.h:539
MessageHandler(const char *name, unsigned priority=100, const char *trackName=0, bool addPriority=true)
virtual bool receivedInternal(Message &msg)
NamedCounter * objectsCounter() const
Definition yatengine.h:546
Abstract message hook.
Definition yatengine.h:922
virtual bool enqueue(Message *msg)=0
virtual bool matchesFilter(const Message &msg)=0
Post-dispatching message hook.
Definition yatengine.h:684
virtual ~MessageNotifier()
virtual void dispatched(const Message &msg, bool handled)=0
Post-dispatching message hook that can be added to a list.
Definition yatengine.h:706
A message queue.
Definition yatengine.h:951
virtual void received(Message &msg)
void addFilter(const char *name, const char *value)
void removeFilter(const String &name)
virtual bool enqueue(Message *msg)
MessageQueue(const char *hookName, int numWorkers=0)
void removeThread(Thread *thread)
virtual bool matchesFilter(const Message &msg)
const NamedList & getFilters() const
Definition yatengine.h:1014
unsigned int count() const
Definition yatengine.h:1007
A multiple message receiver.
Definition yatengine.h:615
virtual bool received(Message &msg, int id)=0
A message handler relay.
Definition yatengine.h:631
virtual bool received(Message &msg)
Definition yatengine.h:655
int id() const
Definition yatengine.h:662
virtual bool receivedInternal(Message &msg)
MessageRelay(const char *name, MessageReceiver *receiver, int id, int priority=100, const char *trackName=0, bool addPriority=true)
Definition yatengine.h:643
A message container class.
Definition yatengine.h:313
virtual void * getObject(const String &name) const
Time & msgTime()
Definition yatengine.h:409
int decode(const char *str, bool &received, const char *id)
void setNotify(bool notify=true)
Definition yatengine.h:395
RefObject * userData() const
Definition yatengine.h:370
const Time & msgTime() const
Definition yatengine.h:416
virtual void dispatched(bool accepted)
Message & operator=(const char *value)
Definition yatengine.h:422
void userData(RefObject *data)
Message(const Message &original)
bool broadcast() const
Definition yatengine.h:402
String & retValue()
Definition yatengine.h:356
const String & retValue() const
Definition yatengine.h:363
void * userObject(const String &name) const
Definition yatengine.h:386
int decode(const char *str, String &id)
String encode(const char *id) const
Message(const char *name, const char *retval=0, bool broadcast=false)
String encode(bool received, const char *id) const
Message(const Message &original, bool broadcast)
Plugin support.
Definition yatengine.h:1052
virtual void * getObject(const String &name) const
virtual const String & toString() const
Definition yatengine.h:1072
bool earlyInit() const
Definition yatengine.h:1112
virtual void initialize()=0
const String & name() const
Definition yatengine.h:1098
Plugin(const char *name, bool earlyInit=false)
virtual bool isBusy() const
Definition yatengine.h:1091
NamedCounter * objectsCounter() const
Definition yatengine.h:1105
Atomic access and operations to shared variables.
Definition yatengine.h:240
unsigned int inc(const String &name, unsigned int wrap=0)
void clear(const String &name)
SharedVars()
Definition yatengine.h:245
bool create(const String &name, const char *val=0)
void set(const String &name, const char *val)
void get(const String &name, String &rval)
bool exists(const String &name)
unsigned int dec(const String &name, unsigned int wrap=0)
Thread support class.
Definition yateclass.h:6005
A time holding class.
Definition yateclass.h:3927
int(* EngineLoop)()
Definition yatengine.h:1181
bool UNLOAD_PLUGIN(bool unloadNow)
void INIT_PLUGIN(class pclass)
Definition yateclass.h:848