68 {
return m_sections.length(); }
74 inline unsigned int count()
const
75 {
return m_sections.count(); }
120 int minvalue = INT_MIN,
int maxvalue = INT_MAX,
bool clamp =
true)
const;
144 int64_t minvalue = LLONG_MIN, int64_t maxvalue = LLONG_MAX,
bool clamp =
true)
const;
235 inline bool loadMain(
bool warn =
true) {
242 bool loadFile(
const char* file,
String sect,
unsigned int depth,
bool warn,
void* priv);
259 :
Mutex(false,
"SharedVars"), m_vars(name)
325 uint64_t
add(
const String& name, uint64_t val, uint64_t wrap = 0);
334 uint64_t
sub(
const String& name, uint64_t val, uint64_t wrap = 0);
344 bool skipPrefix =
true,
bool replace =
false) {
390 explicit Message(
const char* name,
const char* retval = 0,
bool broadcast =
false);
454 {
return m_data ? m_data->getObject(name) : 0; }
463 { m_notify = notify; }
470 {
return m_broadcast; }
499 {
return m_timeEnqueue; }
507 {
return m_timeEnqueue; }
515 {
return m_timeDispatch; }
523 {
return m_timeDispatch; }
565 int decode(
const char* str,
bool& received,
const char*
id);
586 void commonEncode(
String& str)
const;
587 int commonDecode(
const char* str,
int offs);
601 : m_filter(0), m_msgFilter(0)
608 { set(m_filter); set(m_msgFilter); }
615 return (!m_msgFilter || m_msgFilter->matchString(msg))
616 && (!m_filter || m_filter->matchListParam(msg));
631 {
return m_msgFilter; }
639 { set(m_filter,filter); }
647 { set(m_msgFilter,filter); }
659 { set(m_msgFilter); }
673 inline void setFilter(
const char* name,
const char* value)
702 const char* trackName = 0,
bool addPriority =
true);
726 {
return m_priority; }
733 {
return m_trackName; }
740 {
return m_trackNameOnly; }
752 tmp <<
':' << priority();
753 if (m_trackName.endsWith(tmp))
754 m_trackNameOnly = m_trackName.substr(0,m_trackName.length() - tmp.
length());
756 m_trackNameOnly = m_trackName;
764 {
return m_counter; }
771 {
return getFilter(); }
835 int priority = 100,
const char* trackName = 0,
bool addPriority =
true)
837 m_receiver(receiver), m_id(id)
847 {
return m_receiver && m_receiver->received(msg,m_id); }
853 inline int id()
const
927 {
return m_trackParam; }
982 { m_warnTime = usec; }
989 { m_traceTime = on; }
996 { m_traceHandlerTime = on; }
1008 {
return m_messages.get() || m_messages.next(); }
1015 {
return m_handlers.get() || m_handlers.next(); }
1022 {
return m_hooks.get() || m_hooks.next(); }
1047 {
return m_enqueueCount; }
1054 {
return m_dequeueCount; }
1061 {
return m_dispatchCount; }
1068 {
return m_queuedMax; }
1076 {
return usec ? m_msgAvgAge : ((m_msgAvgAge + 500) / 1000); }
1083 {
return m_handlersLock; }
1092 void getStats(u_int64_t& enqueued, u_int64_t& dequeued, u_int64_t& dispatched, u_int64_t& queueMax);
1111 unsigned int* total = 0);
1119 { m_trackParam = paramName; }
1131 unsigned int m_changes;
1132 u_int64_t m_warnTime;
1133 u_int64_t m_enqueueCount;
1134 u_int64_t m_dequeueCount;
1135 u_int64_t m_dispatchCount;
1136 u_int64_t m_queuedMax;
1137 u_int64_t m_msgAvgAge;
1139 bool m_traceHandlerTime;
1242 {
return m_filters; }
1264 unsigned int m_count;
1286 explicit Plugin(
const char* name,
bool earlyInit =
false);
1333 {
return m_counter; }
1364#define INIT_PLUGIN(pclass) static pclass __plugin
1365#ifdef DISABLE_UNLOAD
1366#define UNLOAD_PLUGIN(arg) static bool _unused_unload(bool arg)
1369#define UNLOAD_PLUGIN(arg) extern "C" __declspec(dllexport) bool _unload(bool arg)
1371#define UNLOAD_PLUGIN(arg) extern "C" bool _unload(bool arg)
1418 friend class EnginePrivate;
1419 friend class EngineCommand;
1462 static int main(
int argc,
const char** argv,
const char** env,
1463 RunMode mode = Console, EngineLoop loop = 0,
bool fail =
false);
1470 static void help(
bool client,
bool errout =
false);
1508 return (s_congestion && (s_accept < Congestion)) ? Congestion : s_accept;
1524 return s_callAccept;
1538 {
return s_congestion; }
1545 {
return (s_mode ==
Client) || (s_mode == ClientProxy); }
1567 {
return s_shrpath; }
1589 {
return s_cfgsuffix; }
1595 {
return s_modpath; }
1617 {
return s_modsuffix; }
1645 {
return s_params; }
1663 static void halt(
unsigned int code);
1671 static bool restart(
unsigned int code,
bool gracefull =
false);
1678 {
return s_started; }
1685 {
return (s_haltcode != -1); }
1716 inline static bool enqueue(
const char* name,
bool broadcast =
false)
1717 {
return name && *name && enqueue(
new Message(name,0,broadcast)); }
1740 static bool dispatch(
const char* name,
bool broadcast =
false);
1749 {
return m_dispatcher.setHook(hook,remove); }
1756 {
return s_self ? s_self->m_dispatcher.trackParam() :
String::empty(); }
1782 {
return m_dispatcher.messageCount(); }
1789 {
return m_dispatcher.handlerCount(); }
1796 {
return m_dispatcher.postHookCount(); }
1803 {
return m_messageRate; }
1810 {
return m_maxMsgRate; }
1818 {
return (
unsigned int)m_dispatcher.messageAge(usec); }
1827 inline void getStats(u_int64_t& enqueued, u_int64_t& dequeued, u_int64_t& dispatched, u_int64_t& queueMax)
1828 { m_dispatcher.getStats(enqueued,dequeued,dispatched,queueMax); }
1834 { m_maxMsgRate = m_messageRate; m_dispatcher.m_queuedMax = m_dispatcher.messageCount(); }
1842 {
return !!m_libs[name]; }
1906 {
return s_self ? &(s_self->m_dispatcher) : 0; }
1922 bool loadPlugin(
const char* file,
bool local =
false,
bool nounload =
false);
1936 void internalStatisticsStart();
1937 void tryPluginFile(
const String& name,
const String& path,
bool defload);
1940 uint64_t m_dispatchedLast;
1941 unsigned int m_messageRate;
1942 unsigned int m_maxMsgRate;
1943 bool m_rateCongested;
1944 bool m_queueCongested;
1945 bool m_ageCongested;
1949 static String s_cfgsuffix;
1951 static String s_modsuffix;
1954 static int s_haltcode;
1956 static bool s_started;
1957 static unsigned int s_congestion;
1958 static CallAccept s_accept;
A holder for a debug level.
Definition yateclass.h:329
Definition yateclass.h:1627
Ephemeral mutex, semaphore or rw-lock locking object.
Definition yateclass.h:10000
Matching item common interface.
Definition yateclass.h:8704
bool matchListParam(const NamedList &list, MatchingParams *params=0) const
Definition yateclass.h:8747
bool matchString(const String &str, MatchingParams *params=0) const
Definition yateclass.h:8738
String comparison matching item.
Definition yateclass.h:8864
Mutex support.
Definition yateclass.h:9403
Atomic counter with name.
Definition yateclass.h:5428
A named string container class.
Definition yateclass.h:7690
NamedList & copySubParams(const NamedList &original, const String &prefix, bool skipPrefix=true, bool replace=false)
NamedList & copyParams(bool replace, const NamedList &original, bool copyUserData=false)
A named string class.
Definition yateclass.h:5304
An object list class.
Definition yateclass.h:2032
ObjList * next() const
Definition yateclass.h:2083
GenObject * get() const
Definition yateclass.h:2068
unsigned int count() const
unsigned int length() const
Read/write lock support.
Definition yateclass.h:9720
Definition yateclass.h:1752
virtual void * getObject(const String &name) const
Templated smart pointer class.
Definition yateclass.h:1884
A C-style string handling class.
Definition yateclass.h:3055
bool endsWith(const char *what, bool wordBreak=false, bool caseInsensitive=false) const
String & operator=(const String &value)
Definition yateclass.h:3518
static const String & empty()
unsigned int length() const
Definition yateclass.h:3182
String substr(int offs, int len=-1) const
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:60
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:67
Configuration(const char *filename, bool warn=true)
void setValue(const String §, const char *key, bool value)
unsigned int count() const
Definition yatengine.h:74
const char * getValue(const String §, const String &key, const char *defvalue=0) const
Engine checker interface.
Definition yatengine.h:1382
virtual bool check(const ObjList *cmds)=0
virtual ~EngineCheck()
Definition yatengine.h:1387
static void setChecker(EngineCheck *ptr=0)
Engine globals.
Definition yatengine.h:1417
static bool clientMode()
Definition yatengine.h:1544
static RunMode mode()
Definition yatengine.h:1500
static void halt(unsigned int code)
bool loadPluginDir(const String &relPath)
static const Configuration & config()
static void clearEvents(const String &type)
void resetMax()
Definition yatengine.h:1833
static const String & nodeName()
Definition yatengine.h:1559
static const String & sharedPath()
Definition yatengine.h:1566
bool loadPlugin(const char *file, bool local=false, bool nounload=false)
RunMode
Definition yatengine.h:1425
static void help(bool client, bool errout=false)
static const String & moduleSuffix()
Definition yatengine.h:1616
static const char * pathSeparator()
unsigned int handlerCount()
Definition yatengine.h:1788
static const TokenDict * getCallAcceptStates()
Definition yatengine.h:1523
static bool uninstall(MessageHandler *handler)
unsigned int messageRate() const
Definition yatengine.h:1802
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:1446
static CallAccept accept()
Definition yatengine.h:1507
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:1827
bool pluginLoaded(const String &name) const
Definition yatengine.h:1841
bool setHook(MessagePostHook *hook, bool remove=false)
Definition yatengine.h:1748
static bool dispatch(Message &msg)
static MessageDispatcher * dispatcher()
Definition yatengine.h:1905
static const String & trackParam()
Definition yatengine.h:1755
unsigned int postHookCount()
Definition yatengine.h:1795
unsigned int messageAge(bool usec=false) const
Definition yatengine.h:1817
static void buildCmdLine(String &line)
static bool dispatch(Message *msg)
static const String & configSuffix()
Definition yatengine.h:1588
static void initLibrary(const String &line, String *output=0)
unsigned int messageMaxRate() const
Definition yatengine.h:1809
static const String & configPath(bool user=false)
static const String & modulePath()
Definition yatengine.h:1594
static unsigned int getCongestion()
Definition yatengine.h:1537
static int cleanupLibrary()
unsigned int messageCount()
Definition yatengine.h:1781
static SharedVars & sharedVars()
static String configFile(const char *name, bool user=false)
static void setAccept(CallAccept ca)
Definition yatengine.h:1515
static bool enqueue(const char *name, bool broadcast=false)
Definition yatengine.h:1716
static bool started()
Definition yatengine.h:1677
static void setCongestion(const char *reason=0)
static bool exiting()
Definition yatengine.h:1684
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:1644
A message dispatching hub.
Definition yatengine.h:907
bool hasMessages() const
Definition yatengine.h:1007
void warnTime(u_int64_t usec)
Definition yatengine.h:981
const String & trackParam() const
Definition yatengine.h:926
bool enqueue(Message *msg)
u_int64_t messageAge(bool usec=false) const
Definition yatengine.h:1075
bool install(MessageHandler *handler)
u_int64_t queuedMax() const
Definition yatengine.h:1067
unsigned int handlerCount()
RWLock & handlersLock()
Definition yatengine.h:1082
u_int64_t dequeueCount() const
Definition yatengine.h:1053
void traceHandlerTime(bool on=false)
Definition yatengine.h:995
u_int64_t enqueueCount() const
Definition yatengine.h:1046
void trackParam(const char *paramName)
Definition yatengine.h:1118
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 setHook(MessagePostHook *hook, bool remove=false)
bool hasHooks() const
Definition yatengine.h:1021
unsigned int postHookCount()
bool hasHandlers() const
Definition yatengine.h:1014
bool dispatch(Message &msg)
unsigned int fillHandlersInfo(bool matchName, const String &match, String *details=0, unsigned int *total=0)
u_int64_t dispatchCount() const
Definition yatengine.h:1060
unsigned int messageCount()
void traceTime(bool on=false)
Definition yatengine.h:988
A message filter.
Definition yatengine.h:595
bool matchesMsg(const Message &msg) const
Definition yatengine.h:614
void setFilter(NamedString *filter)
MessageFilter()
Definition yatengine.h:600
const MatchingItemBase * getMsgFilter() const
Definition yatengine.h:630
void clearFilter()
Definition yatengine.h:652
void setFilter(const char *name, const char *value)
Definition yatengine.h:673
void setFilter(MatchingItemBase *filter)
Definition yatengine.h:638
void setMsgFilter(MatchingItemBase *filter)
Definition yatengine.h:646
~MessageFilter()
Definition yatengine.h:607
void clearMsgFilter()
Definition yatengine.h:658
const MatchingItemBase * getFilter() const
Definition yatengine.h:623
A message handler.
Definition yatengine.h:690
const String & trackNameOnly() const
Definition yatengine.h:739
const MatchingItemBase * filter() const
Definition yatengine.h:770
virtual ~MessageHandler()
virtual bool received(Message &msg)=0
const String & trackName() const
Definition yatengine.h:732
unsigned priority() const
Definition yatengine.h:725
void trackName(const char *name)
Definition yatengine.h:747
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:763
Abstract message hook.
Definition yatengine.h:1149
virtual bool enqueue(Message *msg)=0
virtual bool matchesFilter(const Message &msg)=0
Post-dispatching message hook.
Definition yatengine.h:875
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:897
A message queue.
Definition yatengine.h:1178
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:1241
unsigned int count() const
Definition yatengine.h:1234
A multiple message receiver.
Definition yatengine.h:806
virtual bool received(Message &msg, int id)=0
A message handler relay.
Definition yatengine.h:822
virtual bool received(Message &msg)
Definition yatengine.h:846
int id() const
Definition yatengine.h:853
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:834
A message container class.
Definition yatengine.h:380
virtual void * getObject(const String &name) const
Time & msgTime()
Definition yatengine.h:483
int decode(const char *str, bool &received, const char *id)
void setNotify(bool notify=true)
Definition yatengine.h:462
RefObject * userData() const
Definition yatengine.h:437
void resetMsg(Time tm=Time::now())
const Time & msgTime() const
Definition yatengine.h:490
virtual void dispatched(bool accepted)
const Time & msgTimeEnqueue() const
Definition yatengine.h:506
Message & operator=(const char *value)
Definition yatengine.h:528
void userData(RefObject *data)
Message(const Message &original)
Time & msgTimeDispatch()
Definition yatengine.h:514
bool broadcast() const
Definition yatengine.h:469
String & retValue()
Definition yatengine.h:423
Time & msgTimeEnqueue()
Definition yatengine.h:498
const String & retValue() const
Definition yatengine.h:430
void * userObject(const String &name) const
Definition yatengine.h:453
int decode(const char *str, String &id)
const Time & msgTimeDispatch() const
Definition yatengine.h:522
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:1279
virtual void * getObject(const String &name) const
virtual const String & toString() const
Definition yatengine.h:1299
bool earlyInit() const
Definition yatengine.h:1339
virtual void initialize()=0
const String & name() const
Definition yatengine.h:1325
Plugin(const char *name, bool earlyInit=false)
virtual bool isBusy() const
Definition yatengine.h:1318
NamedCounter * objectsCounter() const
Definition yatengine.h:1332
Atomic access and operations to shared variables.
Definition yatengine.h:252
void clear(const String &name)
uint64_t dec(const String &name, uint64_t wrap=0)
SharedVars(const char *name=0)
Definition yatengine.h:258
bool create(const String &name, const char *val=0)
void set(const String &name, const char *val)
static bool getList(RefPointer< SharedVars > &dest, const String &name)
uint64_t add(const String &name, uint64_t val, uint64_t wrap=0)
void get(const String &name, String &rval)
bool exists(const String &name)
virtual const String & toString() const
Definition yatengine.h:356
uint64_t inc(const String &name, uint64_t wrap=0)
void copy(NamedList &dest, const String &prefix=String::empty(), bool skipPrefix=true, bool replace=false)
Definition yatengine.h:343
uint64_t sub(const String &name, uint64_t val, uint64_t wrap=0)
Thread support class.
Definition yateclass.h:10192
A time holding class.
Definition yateclass.h:5764
int(* EngineLoop)()
Definition yatengine.h:1408
bool UNLOAD_PLUGIN(bool unloadNow)
void INIT_PLUGIN(class pclass)
Definition yateclass.h:891