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