This is an old revision of
Doc/API/part2 from 2016-12-11 17:52:16..
2. Îáùàÿ ñòðóêòóðà ñèñòåìû. Ìîäóëüíîñòü (TSubSYS, TModule)
Êîðíåì, îò êîòîðîãî ñòðîèòñÿ âñÿ ñèñòåìà, ÿâëÿåòñÿ îáúåêò TSYS. Êîðåíü ñîäåðæèò ïîäñèñòåìû (TSubSYS). Ïîäñèñòåìû ìîãóò áûòü: îáû÷íûìè è ìîäóëüíûìè. Îòëè÷èå ìîäóëüíûõ ïîäñèñòåì ÷åòêî ïðîñëåæèâàåòñÿ íà ðèñ. 1. Òàê, ìîäóëüíûå ïîäñèñòåìû îáÿçàòåëüíî ñîäåðæàò ñïèñîê ìîäóëüíûõ îáúåêòîâ (TModule), íàïðèìåð ïîäñèñòåìà àðõèâû TArchiveS ñîäåðæèò ìîäóëüíûå îáúåêòû TTypeArchivator.  òîæå âðåìÿ îáû÷íàÿ ïîäñèñòåìà òàêèõ îáúåêòîâ íå ñîäåðæèò. Íàïðèìåð, ïîäñèñòåìà áåçîïàñíîñòè TSeñurity (ðèñ.2).

Ðèñ. 2. Èåðàðõè÷åñêàÿ ñòðóêòóðà ñèñòåìû OpenSCADA.
 ïðîöåññå èíèöèàëèçàöèè êîðíÿ (TSYS) îïðåäåëÿåòñÿ ãëîáàëüíàÿ ïåðåìåííàÿ SYS. Ïåðåìåííàÿ SYS ìîæåò èñïîëüçîâàòüñÿ äëÿ ïðÿìîãî îáðàùåíèÿ ê êîðíþ ñèñòåìû èç ëþáîãî å¸ óçëà. Èíèöèàëèçàöèÿ êîðíÿ âûïîëíÿåòñÿ åäèíîæäû èç ãëàâíîé âûçûâàþùåé ôóíêöèè. Ïîñëå çàïóñêà óïðàâëåíèå çàõâàòûâàåòñÿ îáúåêòîì ñèñòåìû äî îñòàíîâêè. Êîðíåâîé îáúåêò êîíöåíòðèðóåò âñå îáùåñèñòåìíûå ôóíêöèè ñèñòåìû OpenSCADA.
Ïðîäîëæåíèåì êîðíåâîãî îáúåêòà (TSYS), âûïîëíÿþùåãî ôóíêöèè îáñëóæèâàíèÿ ïîòîêà ñèñòåìíûõ ñîîáùåíèé, âûñòóïàåò îáúåêò TMess. Îáúåêò äîñòóïåí ïîñðåäñòâîì ãëîáàëüíîé ïåðåìåííîé Mess, êîòîðàÿ èíèöèàëèçèðóåòñÿ êîðíåì ñèñòåìû. Îáúåêò ñîäåðæèò ôóíêöèè êîäèðîâàíèÿ, äåêîäèðîâàíèÿ è ëîêàëèçàöèè ñîîáùåíèé.
 ïîäñèñòåìàõ (TSubSYS) ðåàëèçóþòñÿ ôóíêöèè õàðàêòåðíûå äëÿ êàæäîé ïîäñèñòåìû èíäèâèäóàëüíî, ñ îáùèì äëÿ âñåõ ïîäñèñòåì äîñòóïîì, ÷åðåç îáúåêò TSubSYS. Ìîäóëüíàÿ ïîäñèñòåìà èìååò âîçìîæíîñòü ðàñøèðÿòü ôóíêöèîíàëüíîñòü ïîñðåäñòâîì ìîäóëåé. Äëÿ ýòîé öåëè ìîäóëüíàÿ ïîäñèñòåìà ïðåäîñòàâëÿåò äîñòóï ê ìîäóëÿì ñâîåãî òèïà â âèäå ìîäóëüíûõ îáúåêòîâ.
Ìîäóëü — ñîñòàâíàÿ ÷àñòü ìîäóëüíîé ïîäñèñòåìû.  îáùåì, äëÿ âñåõ ìîäóëåé è èõ ïîäñèñòåì, ìîäóëü ïðåäîñòàâëÿåò èíôîðìàöèþ î ñåáå, ñâî¸ì ïðîèñõîæäåíèè è ýêñïîðòèðóåìûõ ôóíêöèÿõ. Îòäåëüíî âçÿòûé ìîäóëü ðåàëèçóåò ôóíêöèîíàëüíîñòü â ñîîòâåòñòâèè ñî ñâîèìè ïîòðåáíîñòÿìè.
2.1. Êîðíåâîé îáúåêò ñèñòåìû (TSYS)
Äàííûå:
Èíôîðìàöèîííûå ïåðåìåííûå ïðîãðàììû:
- PACKAGE_LICENSE — Ëèöåíçèÿ ðàñïðîñòðàíåíèÿ ïðîãðàììû
- PACKAGE_DESCR — Êðàòêîå îïèñàíèå ïðîãðàììû
- PACKAGE_AUTHOR — Àâòîð ïðîãðàììû
- PACKAGE_SITE — Web ñàéò ïîääåðæêè ïðîãðàììû
Ñïîñîáû êîäèðîâàíèÿ ñèìâîëüíûõ ïîñëåäîâàòåëüíîñòåé (enum — TSYS::Code):
- PathEl — ýëåìåíò ïóòè (ñèìâîëû: '/' è '%' ê âèäó '%2f');
- HttpURL — àäðåñ áðàóçåðà (http url);
- Html — ñïåöèàëüíûõ ñèìâîëîâ äëÿ èñïîëüçîâàíèÿ â html;
- JavaSc — ñèìâîëîâ êîíöà ñòðîêè äëÿ JavaScript;
- SQL — çíà÷åíèÿ SQL-çàïðîñîâ;
- Custom — âûáîðî÷íîå êîäèðîâàíèå óêàçàííûõ ñèìâîëîâ;
- base64 — Mime êîäèðîâàíèå â ñòàíäàðòå Base64;
- FormatPrint — Êîäèðîâàíèå/ýêðàíèðîâàíèå ýëåìåíòîâ ôîðìàòèðîâàíèÿ äëÿ ôóíêöèé âðîäå "printf";
- oscdID — Êîäèðîâàíèå èäåíòèôèêàòîðîâ óçëîâ.
- Bin — Êîäèðîâàíèå áèíàðíûõ äàííûõ â òåêñò è îáðàòíî.
- Reverse — Èíâåðñèÿ ïîðÿäêà ñèìâîëîâ â ñòðîêå.
- ShieldSimb — Êîäèðîâàíèå ýêðàíèðîâàííûõ ñèìâîëîâ âðîäå "\n" â ðåàëüíûå êîäû.
Âèäû ïðåäñòàâëåíèÿ öåëîãî â ôóíêöèÿõ TSYS::int2str() è TSYS::ll2str() (enum — TSYS::IntView):
- Dec — äåñÿòè÷íîå;
- Oct — âîñüìåðè÷íîå;
- Hex — øåñòíàäöàòåðè÷íîå.
Ñòðóêòóðà çàäà÷è OpenSCADA (class — TSYS::STask):
- STask( pthread_t ithr, char ipolicy, char iprior ); — êîíñòðóêòîð îïèñàòåëÿ çàäà÷è äëÿ ïîòîêà ithr, åãî ïîëèòèêè ïëàíèðîâàíèÿ ipolicy è ïðèîðèòåòà iprior.
- float consumpt( ) const; — ïîñëåäíåå èñïîëüçîâàíèå âðåìåíè ïðîöåññîðà, â ñåêóíäàõ.
- float period( ); — ìãíîâåííàÿ ïåðèîäè÷íîñòü âûçîâà çàäà÷è, â ñåêóíäàõ.
- string path; — ïóòü.
- pthread_t thr; — óêàçàòåëü ïîòîêà.
- uint8_t policy, prior; — ïîëèòèêà è ïðèîðèòåò ïëàíèðîâàíèÿ.
- pid_t tid; — èäåíòèôèêàòîð ïîòîêà êàê èäåíòèôèêàòîð ïðîöåññà Linux.
- ResString cpuSet; — ïåðå÷åíü èñïîëüçîâàííûõ ïðîöåññîðîâ/ÿäåð.
- void *(*task) (void *); — óêàçàòåëü íà çàäà÷ó.
- void *taskArg; — àðãóìåíòû çàäà÷è.
- unsigned flgs; — ôëàãè, "enum Flgs { Detached = 0x01, FinishTask = 0x02; }"
- int64_t tm_beg, tm_end, tm_per, tm_pnt, cycleLost, lagMax, consMax; — ïåðåìåííûå ñòàòèñòèêè èñïîëíåíèÿ çàäà÷è.
Ñòðóêòóðà ðåçåðâíîé ñòàíöèè (class — TSYS::SStat):
- int8_t lev; — óðîâåíü ñòàíöèè;
- bool isLive; — ïðèçíàê "Ñòàíèöÿ Æèâà";
- float cnt; — ñ÷¸ò÷èê çàïðîñîâ ê ðåçåðâíîé ñòàíöèè èëè òàéìåð ïîâòîðíîé ïîïûòêè ïîäêëþ÷åíèÿ;
- SStat( int8_t ilev, bool iisLive = false, float icnt = 0 ) — êîíñòðóêòîð îáúåêòà ñòàíöèè ñ óðîâíåì ilev, èíèöèèðîâàííàÿ êàê "æèâàÿ" iisLive è ñ÷¸ò÷èêîì icnt;
- SStat( ) — êîíñòðóêòîð ïî óìîë÷àíèþ, èíèöèèðóåòñÿ êàê îòñóòñòâóþùàÿ è íåàêòèâíàÿ ñòàíöèÿ;
- bool isActive( ) — ñòàíöèÿ àêòèâíà.
Øàáëîíû/îïðåäåëåíèÿ:
- USER_FILE_LIMIT — Ëèìèò íà ðàçìåð ôàéëîâ äëÿ ïîëüçîâàòåëüñêîé çàãðóçêè (1 ÌÁ).
- STR_BUF_LEN — Ñòàíäàðòíàÿ äëèíà ñòðîêîâûõ áóôåðîâ (10000).
- NSTR_BUF_LEN — Ñòàíäàðòíàÿ äëèíà ñòðîêîâûõ áóôåðîâ, äëÿ ÷èñåë (100).
- STD_WAIT_DELAY — Ñòàíäàðòíûé êâàíò âðåìåíè öèêëîâ îæèäàíèÿ (100 ìñ).
- STD_CACHE_LIM — Ñòàíäàðòíîå îãðàíè÷åíèå êåøà (100).
- STD_WAIT_TM — Ñòàíäàðòíûé èíòåðâàë îæèäàíèÿ ñîáûòèÿ (10 ìñ).
- STD_INTERF_TM — Òàéìàóò, ìàêñèìàëüíîå âðåìÿ, îæèäàíèÿ ðåàêöèè èíòåðôåéñà (5 ñ).
- BUF_ARCH_NM — Èìÿ áóôåðà àðõèâà ("<buffer>").
- ALRM_ARCH_NM — Èìÿ òàáëèöû íàðóøåíèé ("<alarms>").
- __func__ — Ïîëíîå èìÿ âûçûâàþùåé ôóíêöèè.
- vmin(a, b) — Îïðåäåëåíèå ìèíèìàëüíîãî çíà÷åíèÿ.
- vmax(a, b) — Îïðåäåëåíèå ìàêñèìàëüíîãî çíà÷åíèÿ.
Ïóáëè÷íûå ìåòîäû:
- TSYS( int argi, char **argb, char **env ); — Èíèöèàëèçèðóþùèé êîíñòðóêòîð.
- int start( ); — Çàïóñê ñèñòåìû. Ôóíêöèÿ çàâåðøàåòñÿ òîëüêî ñ çàâåðøåíèåì ðàáîòû ñèñòåìû. Âîçâðàùàåòñÿ êîä âîçâðàòà.
- void stop( ); — Êîìàíäà îñòàíîâêè ñèñòåìû.
- int stopSignal( ); — Êîä âîçâðàòà â ñëó÷àå îñòàíîâà ñèñòåìû. Ìîæåò èñïîëüçîâàòüñÿ êàê ïðèçíàê "Îñòàíîâ ñèñòåìû" ðàçëè÷íûìè ïîäñèñòåìàìè.
- string id( ); — Èäåíòèôèêàòîð ñòàíöèè.
- string name( ); — Ëîêàëèçîâàííîå èìÿ ñòàíöèè.
- string user( ); — Ñèñòåìíûé ïîëüçîâàòåëü îò èìåíè êîòîðîãî çàïóùåíà ñèñòåìà.
- string host( ); — Èìÿ õîñòà íà êîòîðîì èñïîëíÿåòñÿ ñòàíöèÿ.
- void list( vector<string> &list ) const; — Ñïèñîê ïîäñèñòåì çàðåãèñòðèðîâàííûõ â ñèñòåìå.
- bool present( const string &name ) const; — Ïðîâåðêà íà íàëè÷èå óêàçàííîé ïîäñèñòåìû.
- void add( TSubSYS *sub ); — Äîáàâëåíèå/ðåãèñòðàöèÿ ïîäñèñòåìû.
- void del( const string &name ); — Óäàëåíèå ïîäñèñòåìû.
- AutoHD<TSubSYS> at( const string &name ) const; — Ïîäêëþ÷åíèå ê óêàçàííîé ïîäñèñòåìå.
- AutoHD<TUIS> ui( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Ïîëüçîâàòåëüñêèå èíòåðôåéñû".
- AutoHD<TArchiveS> archive( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Àðõèâû".
- AutoHD<TBDS> db( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Áàçû äàííûõ".
- AutoHD<TControllerS> daq( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Ñáîð äàííûõ".
- AutoHD<TProtocolS> protocol( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Ïðîòîêîëû".
- AutoHD<TTransportS> transport( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Òðàíñïîðòû".
- AutoHD<TSpecialS> special( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Ñïåöèàëüíûå".
- AutoHD<TModSchedul> modSchedul( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Óïðàâëåíèå ìîäóëÿìè".
- AutoHD<TSeñurity> señurity( ); — Ïðÿìîé äîñòóï ê ïîäñèñòåìå "Áåçîïàñíîñòü".
- string workDir( ); — Ðàáî÷àÿ äèðåêòîðèÿ ñòàíöèè.
- string modDir( ); — Äèðåêòîðèÿ ìîäóëåé OpenSCADA.
- string icoDir( ); — Äèðåêòîðèÿ èêîíîê OpenSCADA.
- string docDir( ); — Äèðåêòîðèÿ äîêóìåíòîâ OpenSCADA.
- void setWorkDir( const string &wdir, bool init = false ); — Óñòàíîâêà ðàáî÷åé äèðåêòîðèè ñòàíöèè.
- void setModDir( const string &mdir, bool init = false ); — Óñòàíîâêà äèðåêòîðèè ìîäóëåé OpenSCADA.
- void setIcoDir( const string &idir, bool init = false ); — Óñòàíîâêà äèðåêòîðèè èêîíîê OpenSCADA.
- void setDocDir( const string &idir, bool init = false ); — Óñòàíîâêà äèðåêòîðèè äîêóìåíòîâ OpenSCADA.
- string cfgFile( ); — Èìÿ êîíôèãóðàöèîííîãî ôàéëà ñèñòåìû.
- XMLNode &cfgRoot( ); — Ðàçîáðàííàÿ ñòðóêòóðà êîíôèãóðàöèîííîãî ôàéëà.
- XMLNode *cfgNode( const string &path, bool create = false ); — Ïîëó÷åíèå óçëà êîíôèãóðàöèè ïî åãî ïóòè path. Ñîçäàâàòü ýëåìåíòû ïóòè â ñëó÷àå èõ îòñóòñòâèè create.
- void modifCfg( bool chkPossibleWR = false ); — Îòìåòêà ìîäèôèêàöèè êîíôèãóðàöèè èëè ïðîâåðêà íà âîçìîæíîñòü çàïèñè chkPossibleWR, äëÿ ïîñëåäóþùåãî ñîõðàíåíèÿ â ôàéë.
- string workDB( ); — Ïîëíîå èìÿ ðàáî÷åé ÁÄ.
- string selDB( ); — Âûáðàííàÿ ÁÄ. Èñïîëüçóåòñÿ äëÿ èçáèðàòåëüíîé çàãðóçêè èç óêàçàííîé ÁÄ, â ïîäñèñòåìå "ÁÄ".
- string mainCPUs( ); — Ñïèñîê èñïîëüçóåìûõ ïðîöåññîðîâ.
- bool clockRT( ); — Âûáîð ÷àñîâ ðåàëüíîãî âðåìåíè äëÿ ïëàíèðîâàíèÿ çàäà÷, èíà÷å èñïîëüçóþòñÿ ìîíîòîííûå (ïî óìîë÷àíèþ).
- bool saveAtExit( ); — Ïðèçíàê - "Ñîõðàíÿòü êîíôèãóðàöèþ ñèñòåìû ïðè âûõîäå".
- int savePeriod( ); — Ïåðèîäè÷íîñòü àâòîìàòè÷åñêîãî ñîõðàíåíèÿ ñòàíöèè â ÁÄ (ñåêóíä).
- void setWorkDB( const string &wdb ); — Óñòàíîâêà ïîëíîãî èìåíè ðàáî÷åé ÁÄ.
- void setSelDB( const string &vl ); — Óñòàíîâêà âûáðàííîé ÁÄ äëÿ èçáèðàòåëüíîé çàãðóçêè.
- void setMainCPUs( const string &vl ); — Óñòàíîâêà ñïèñîêà èñïîëüçóåìûõ ïðîöåññîðîâ.
- void setClockRT( bool vl ); — Óñòàíîâêà âûáîðà ÷àñîâ ðåàëüíîãî âðåìåíè äëÿ ïëàíèðîâàíèÿ çàäà÷.
- void setSaveAtExit( bool vl ); — Óñòàíîâêà ïðèçíàêà - "Ñîõðàíÿòü êîíôèãóðàöèþ ñèñòåìû ïðè âûõîäå".
- void setSavePeriod( int vl ); — Óñòàíîâêà ïåðèîäè÷íîñòè àâòîìàòè÷åñêîãî ñîõðàíåíèÿ ñòàíöèè â ÁÄ (ñåêóíä).
- bool chkSelDB( const string& wDB ); — Ôóíêöèÿ ïðîâåðêè íà ñîîòâåòñòâèå óêàçàííîé ÁÄ wDB âûáðàííîé â "selDB()".
- string optDescr( ); — Ëîêàëèçîâàííàÿ ïîìîùü ïî îïöèÿì êîìàíäíîé ñòðîêè è ïàðàìåòðàì êîíôèãóðàöèîííîãî ôàéëà.
- static void sighandler( int signal ); — Ôóíêöèÿ ñòàíäàðòíîãî îáðàáîò÷èêà ñèãíàëîâ ñèñòåìû â öåëîì.
- unsigned long long sysClk( ); — Ðàñ÷¸òíàÿ ÷àñòîòà ïðîöåññîðà íà êîòîðîì ôóíêöèîíèðóåò ñèñòåìà (Ãö).
- void clkCalc( ); — Ðàñ÷¸ò ÷àñòîòû ïðîöåññîðà íà êîòîðîì ðàáîòàåò ñèñòåìà. Âûçûâàåòñÿ ïåðèîäè÷åñêè äëÿ ñèñòåì ñ ïåðåìåííîé ÷àñòîòîé ïðîöåññîðà.
- unsigned long long shrtCnt( ); — Ôóíêöèÿ çàìåðà ìàëûõ èíòåðâàëîâ âðåìåíè ïî ñ÷åò÷èêó òàêòîâ ïðîöåññîðà. Âîçâðàùàåò çíà÷åíèå ñ÷åò÷èêà òàêòîâ ïðîöåññîðà.
- static long HZ( ); — Âðåìÿ ñèñòåìíîãî òèêà ïðîöåññîðà.
- void taskCreate( const string &path, int priority, void *(*start_routine)(void *), void *arg, int wtm = 5, pthread_attr_t *pAttr = NULL, bool *startSt = NULL ); — Ñîçäàíèå çàäà÷è (ïîòîêà) ñ èäåíòèôèêàòîðîì path, ïðèîðèòåòîì priority (-1...99), ôóíêöèåé çàäà÷è start_routine è å¸ àðãóìåíòîâ arg, à òàê-æå îæèäàíèåì çàïóñêà ïîëüçîâàòåëüñêîé ïðîöåäóðû ïî ïðèçíàêó startSt.
- void taskDestroy( const string &path, bool *endrunCntr = NULL, int wtm = 5, bool noSignal = false ); — Óäàëåíèå çàäà÷è ñ èäåíòèôèêàòîðîì path è êîìàíäîé îñòàíîâà endrunCntr. Èñïîëüçóéòå noSignal äëÿ ïðåäîòâðàùåíèÿ îòïðàâêè çàäà÷å ñèãíàëà SIGALRM.
- double taskUtilizTm( const string &path, bool max = false ); — Âðåìÿ, â ñåêóíäàõ, óòèëèçàöèè ðåñóðñîâ ïðîöåññîðà çàäà÷åé path, èëè åãî ìàêñèìàëüíîå çíà÷åíèå max.
- static bool taskEndRun( ); — Ïðîâåðêà íà êîìàíäó îêîí÷àíèÿ çàäà÷è, ïîñðåäñòâîì ñèãíàëà SIGUSR1.
- static const STask& taskDescr( ); — Ïîëó÷åíèå ññûëêè íà îïèñàòåëü òåêóùåé çàäà÷è.
- static int sysSleep( float tm ); — Ôóíêöèÿ ñèñòåìíîãî çàñûïàíèÿ ïîòîêà íà âðåìÿ â ñåêóíäàõ, âïëîòü äî íàíîñåêóíä (1e-9).
- time_t sysTm( ); — Ñèñòåìíîå âðåìÿ áûñòðîãî äîñòóïà, èç îáíîâëÿåìîé ÿ÷åéêè.
- static int64_t curTime(); — Òåêóùåå âðåìÿ â ìèêðîñåêóíäàõ ñ íà÷àëà ýïîõè (01.01.1970).
- static void taskSleep( int64_t per, const string &cron = "", int64_t *lag = NULL ); — Ôóíêöèÿ çàñûïàíèÿ ïîòîêà ïî ñåòêå àáñîëþòíîãî âðåìåíè ñ ïåðèîäîì per â íàíîñåêóíäàõ èëè äî çàïëàíèðîâàííîãî âðåìåíè cron. Åñëè óêàçàíî çàïàçäûâàíèå lag òî â íåãî áóäåò âîçâðàùåíà ðàçíèöà ìåæäó ðåàëüíûì è çàïëàíèðîâàííûì ïðîáóæäåíèåì (ïîòåðÿ öèêëîâ).
- static time_t cron( const string &vl, time_t base = 0 ); — Ïëàíèðîâàíèå âðåìåíè èñïîëíåíèÿ ïî ôîðìàòó ñòàíäàðòà Cron vl, íà÷èíàÿ îò áàçîâîãî âðåìåíè base èëè îò òåêóùåãî âðåìåíè, åñëè áàçà íå óêàçàíà.
- static bool eventWait( bool &m_mess_r_stat, bool exempl, const string &loc, time_t time = 0 ); — Ôóíêöèÿ îæèäàíèÿ ñîáûòèÿ exempl äëÿ ïåðåìåííîé m_mess_r_stat â òå÷åíèå óêàçàííîãî èíòåðâàëà âðåìåíè time äëÿ èñòî÷íèêà loc.
- bool cntrEmpty( ); — Ïðîâåðêà íà îòñóòñòâèå ñ÷¸ò÷èêîâ îòëàäêè.
- double cntrGet( const string &id ); — Ïîëó÷åíèå ñ÷¸ò÷èêà îòëàäêè id.
- void cntrSet( const string &id, double vl ); — Óñòàíîâêà ñ÷åò÷èêà îòëàäêè id â çíà÷åíèå vl.
- void cntrIter( const string &id, double vl ); — Èòåðàöèÿ ñ÷¸ò÷èêà îòëàäêè id íà çíà÷åíèå vl.
- bool rdEnable( ); — Ðåçåðâèðîâàíèå âêëþ÷åíî, ïðèñóòñòâóåò õîòÿ-áû îäíà ðåçåðâíàÿ ñòàíöèÿ.
- bool rdActive( ); — Ðåçåðâèðîâàíèå àêòèâíî, ïðèñóòñòâóåò õîòÿ-áû îäíà àêòèâíàÿ ðåçåðâíàÿ ñòàíöèÿ.
- void rdStList( vector<string> &ls ); — Ñïèñîê ls ñòàíöèé â ðåçåðâå.
- SStat rdSt( const string &id ); — Ïîëó÷åíèå êîïèè ñòðóêòóðû ñîñòîÿíèÿ ðåçåðâíîé ñòàíöèè id.
- map<string, SStat> rdSts( ); — Ïîëó÷åíèå êîïèè ñïèñêà ñòðóêòóð ñîñòîÿíèé ðåçåðâíûõ ñòàíöèé.
- int rdStLevel( ); — Óðîâåíü òåêóùåé ñòàíöèè â ñèñòåìå ðåçåðâèðîâàíèÿ.
- void setRdStLevel( int vl ); — Óñòàíîâêà óðîâíÿ òåêóùåé ñòàíöèè â ñèñòåìå ðåçåðâèðîâàíèÿ.
- float rdTaskPer( ); — Ïåðèîäè÷íîñòü èñïîëíåíèÿ çàäà÷è ðåçåðâèðîâàíèÿ.
- void setRdTaskPer( float vl ); — Óñòàíîâêà ïåðèîäè÷íîñòè èñïîëíåíèÿ çàäà÷è ðåçåðâèðîâàíèÿ.
- int rdRestConnTm( ); — Âðåìÿ ïîâòîðåíèÿ ïîïûòêè âîññòàíîâëåíèÿ ñâÿçè ñ ðåçåðâíûìè ñòàíöèÿìè ïîñëå å¸ ïîòåðè, â ñåêóíäàõ.
- void setRdRestConnTm( int vl ); — Óñòàíîâêà âðåìåíè ïîâòîðåíèÿ ïîïûòêè âîññòàíîâëåíèÿ ñâÿçè ñ ðåçåðâíûìè ñòàíöèÿìè.
- string rdStRequest( XMLNode &req, const string &st = "" ); — Îáùèé çàïðîñ req ê óêàçàííîé ðåçåðâíîé ñòàíöèè st.
- static string int2str( int val, IntView view = Dec ); — Ïðåîáðàçîâàíèå öåëîãî çíàêîâîãî â ñòðîêó âèäà view.
- static string uint2str( unsigned val, IntView view = Dec ); — Ïðåîáðàçîâàíèÿ öåëîãî áåççíàêîâîãî â ñòðîêó âèäà view.
- static string ll2str( long long val, IntView view = Dec ); — Ïðåîáðàçîâàíèÿ äëèííîãî öåëîãî (64áèò) â ñòðîêó âèäà view.
- static string real2str( double val, int prec = 15, char tp = 'g' ); — Ïðåîáðàçîâàíèÿ âåùåñòâåííîãî ñ òî÷íîñòüþ prec çíàêîâ è òèïîì tp â ñòðîêó.
- static double realRound( double val, int dig = 0, bool toint = false ); — Îêðóãëåíèå âåùåñòâåííîãî ÷èñëà äî óêàçàííîãî çíàêà dig ïîñëå çàïÿòîé ñ âîçìîæíîñòüþ ïðåîáðàçîâàíèÿ ê öåëîìó ïîñëå îêðóãëåíèÿ toint.
- static string atime2str( time_t tm, const string &format = "" ); — Ïðåîáðàçîâàíèå àñòðîíîìè÷íîãî UNIX âðåìåíè tm â ñòðîêó, â ñîîòâåòñòâèè ñ ôîðìàòîì format POSIX-ôóíêöèè "strftime()".
- static string time2str( double tm ); — Ïðåîáðàçîâàíèå èíòåðâàëà âðåìåíè, â ñåêóíäàõ, â ñòðîêó âèäà "1÷àñ 23ìèí 10ñåê".
- static string cpct2str( double cnt ); — Ïðåîáðàçîâàíèå ñ÷¸ò÷èêà òðàôèêà cnt (áàéò) â ñòðîêè âèäà "12.5ÊèÁ".
- static string addr2str( void *addr ); — Ïðåîáðàçîâàíèå àäðåñà â ñòðîêó.
- static void *str2addr( const string &str ); — Ïðåîáðàçîâàíèå ñòðîêè â àäðåñ.
- static string strTrim( const string &val, const string &cfg = " \n\t\r" ); — Óäàëÿåò èç èñõîäíîé ñòðîêè val óêàçàííûå cfg (â îñíîâíîì ïóñòûå) ñèìâîëû â íà÷àëå è â êîíöå.
- static string strSepParse( const string &path, int level, char sep, int *off = NULL ); — Ðàçáîð ñòðîêè path íà ñîñòàâëÿþùèå, îòäåë¸ííûå ðàçäåëèòåëüíûì ñèìâîëîì sep, íà÷èíàÿ ñî ñìåùåíèÿ off è êîíòðîëèðóÿ ñìåùåíèå êîíöà ýëåìåíòà â í¸ì æå.
- static string strParse( const string &str, int level, const string &sep, int *off = NULL, bool mergeSepSymb = false ); — Ðàñøèðåííàÿ âåðñèÿ ôóíêöèè ðàçáîðà ñòðîêè "strSepParse()" ïîçâîëÿþùàÿ èñïîëüçîâàòü ìíîãîñèìâîëüíûå ðàçäåëèòåëè è îáúåäèíÿòü îäíîñèìâîëüíûå.
- static string strLine( const string &str, int level, int *off = NULL ); — Ðàçáîð òåêñòà ïî ñòðîêàì äëÿ ðàçíûõ ñïîñîáîâ îêîí÷àíèÿ ñòðîêè (CR, LF è CR/LF).
- static string pathLev( const string &path, int level, bool decode = true, int *off = NULL ); — Âûäåëåíèå ýëåìåíòîâ ïóòè path ñ âîçìîæíîñòüþ èõ äåêîäèðîâàíèÿ, íà÷èíàÿ ñî ñìåùåíèÿ off è êîíòðîëèðóÿ ñìåùåíèå êîíöà ýëåìåíòà â í¸ì æå.
- static string path2sepstr( const string &path, char sep = '.' ); — Ïðåîáðàçîâàíèå ïóòè â ñòðîêó ñ ðàçäåëèòåëåì sep ýëåìåíòîâ.
- static string sepstr2path( const string &str, char sep = '.' ); — Ïðåîáðàçîâàíèå ñòðîêè ñ ðàçäåëèòåëåì sep ýëåìåíòîâ â ïóòü.
- static string strEncode( const string &in, Code tp, const string &opt1 = "" ); — Êîäèðîâàíèå ñòðîêè ïî óêàçàííîìó ïðàâèëó tp è îïöèåé opt1 (ñèìâîëû äëÿ "Custom").
- static string strDecode( const string &in, Code tp = Custom, const string &opt1 = "" ); — Äåêîäèðîâàíèå ñòðîêè ïî óêàçàííîìó ïðàâèëó tp è îïöèåé opt1 (ðàçäåëèòåëü äëÿ "Bin").
- static string strMess( const char *fmt, ... ); static string strMess( unsigned len, const char *fmt, ... ); — Ôîðìèðîâàíèå ñòîêè ïî øàáëîíó fmt è àðãóìåíòàì. Ðåàëèçîâàí íà îñíîâå "printf". Äëÿ âàðèàíòà îãðàíè÷åíèÿ äëèíû ïðåâûøåíèå îòìå÷àåòñÿ äîáàâëåíèåì "...".
- static string strLabEnum( const string &base ); — Ôîðìèðîâàíèå èíäèâèäóàëüíûõ ñòðîêîâûõ ìåòîê îò áàçû base ïóò¸ì èíêðåìåíòàöèè â êîíöå. Ïîääåðæèâàåòñÿ íóìåðàöèÿ â äåñÿòè÷íîì, øåñòíàäöàòåðè÷íîì (ïðåôèêñ "0x") è âîñüìåðè÷íîì (ïðåôèêñ "0") ïðåäñòàâëåíèè.
- string strCompr( const string &in, int lev = -1 ); — Êîìïðåññèÿ ñòðîêè in ñ óðîâíåì êîìïðåññèè lev.
- string strUncompr( const string &in ); — Äåêîìïðåññèÿ ñòðîêè in.
- static inline uint16_t getUnalign16( const void *p ); static inline uint32_t getUnalign32( const void *p ); static inline uint64_t getUnalign64( const void *p ); — Íåâûðàâíåííîå ÷òåíèå áåççíàêîâîãî öåëîãî èç áóôåðà ïî ñìåùåíèþ.
- static inline int getUnalignInt( const void *p ); — Íåâûðàâíåííîå ÷òåíèå çíàêîâîãî öåëîãî èç áóôåðà ïî ñìåùåíèþ.
- static inline float getUnalignFloat( const void *p ); — Íåâûðàâíåííîå ÷òåíèå âåùåñòâåííîãî "float" èç áóôåðà ïî ñìåùåíèþ.
- static inline double getUnalignDbl( const void *p ); — Íåâûðàâíåííîå ÷òåíèå âåùåñòâåííîãî "double" èç áóôåðà ïî ñìåùåíèþ.
- static uint16_t i16_LE( uint16_t in ); static uint32_t i32_LE( uint32_t in ); static uint64_t i64_LE( uint64_t in ); — Ïðåîáðàçîâàíèå ïîðÿäêà öåëîãî ÷èñëà in èç ôîðìàòà Little-Endian (LE) âî âíóòðåííåå ïðåäñòàâëåíèå.
- static uint16_t i16_BE( uint16_t in ); static uint32_t i32_BE( uint32_t in ); static uint64_t i64_BE( uint64_t in ); — Ïðåîáðàçîâàíèå ïîðÿäêà öåëîãî ÷èñëà in èç ôîðìàòà Big-Endian (BE) âî âíóòðåííåå ïðåäñòàâëåíèå.
- static float floatLE( float in ); static double doubleLE( double in ); — Ïðåîáðàçîâàíèå âåùåñòâåííîãî ÷èñëà in èç âíóòðåííåãî ïðåäñòàâëåíèÿ â ôîðìàò IEEE754 Little-Endian (LE).
- static float floatLErev( float in ); static double doubleLErev( double in ); — Ïðåîáðàçîâàíèå âåùåñòâåííîãî ÷èñëà in èç ôîðìàòà IEEE754 Little-Endian (LE) âî âíóòðåííåå ïðåäñòàâëåíèå.
- static float floatBE( float in ); static double doubleBE( double in ); — Ïðåîáðàçîâàíèå âåùåñòâåííîãî ÷èñëà in èç âíóòðåííåãî ïðåäñòàâëåíèÿ â ôîðìàò IEEE754 Big-Endian (BE).
- static float floatBErev( float in ); static double doubleBErev( double in ); — Ïðåîáðàçîâàíèå âåùåñòâåííîãî ÷èñëà in èç ôîðìàòà IEEE754 Big-Endian (BE) âî âíóòðåííåå ïðåäñòàâëåíèå.
- string getCmdOpt( int &curPos, string *argVal = NULL ); static string getCmdOpt_( int &curPos, string *argVal, int argc, char **argv ); — Ðàçáîð ïàðàìåòðîâ êîìàíäíîé ñòðîêè ñ ïåðåáîðîì ïî êóðñîðó curPos. Âîçâðàùàåò èìÿ àðãóìåíòà è åãî âîçìîæíîå çíà÷åíèå â argVal. Ðåàëèçóåò ôîðìàòû êîðîòêèõ êëþ÷åé: "-v", "-v val", "-abcv", "-abcv val"; è äëèííûõ êëþ÷åé: "--var", "--var=val", "--var val".
- static void ctrListFS( XMLNode *nd, const string &fsBase, const string &fileExt = "" ); — Ñïèñîê îáçîðà ýëåìåíòîâ ôàéëîâîé ñèñòåìû îòíîñèòåëüíî áàçû fsBase, äëÿ ôàéëîâ c ðàñøèðåíèÿìè fileExt â âèäå ñïèñêà "png;jpeg;gif;".
- ResRW &cfgRes( ); — Ëîêàòîð ðåñóðñà äåðåâà êîíôèãóðàöèîííîãî ôàéëà.
Ïóáëè÷íûå àòðèáóòû:
- static bool finalKill — Ïðèçíàê "Ôèíàëüíîå ðàçðóøåíèå îáúåêòîâ". Èñïîëüçóåòñÿ äëÿ ïðèíóäèòåëüíîãî îòêëþ÷åíèÿ çàáëîêèðîâàííûõ îáúåêòîâ íà ôèíàëüíîé ñòàäèè âûêëþ÷åíèÿ.
- const int argc — Ñ÷¸ò÷èê àðãóìåíòîâ êîìàíäíîé ñòðîêè.
- const char **argv — Áóôåð àðãóìåíòîâ êîìàíäíîé ñòðîêè.
- const char **envp — Óêàçàòåëü íà ñïèñîê ïàðàìåòðîâ îêðóæåíèÿ.
Êîðîòêèå âûçîâû ãëîáàëüíûõ ôóíêöèé â îáëàñòè èì¸í "OSCADA":
- template <class fVal> fVal fmin( fVal a, fVal b ); template <class fVal> fVal fmax( fVal a, fVal b ); — ôóíêöèîíàëüíûå øàáëîíû îïðåäåëåíèÿ ìèíèìóìà è ìàêñèìóìà äâóõ çíà÷åíèé.
- inline string i2s( int val, TSYS::IntView view = TSYS::Dec ) —> TSYS::int2str(val, view);
- inline string u2s( unsigned val, TSYS::IntView view = TSYS::Dec ) —> TSYS::uint2str(val, view);
- inline string ll2s( long long val, TSYS::IntView view = TSYS::Dec ) —> TSYS::ll2str(val, view);
- inline string r2s( double val, int prec = 15, char tp = 'g' ) —> TSYS::real2str(val, prec, tp);
- inline double rRnd( double val, int dig = 0, bool toint = false ) —> TSYS::realRound(val, dig, toint);
- inline string atm2s( time_t tm, const string &format = "" ) —> TSYS::atime2str(tm, format);
- inline string tm2s( double tm ) —> TSYS::time2str(tm);
- inline int s2i( const string &val ) —> atoi(val.c_str());
- inline long long s2ll( const string &val ) —> atoll(val.c_str());
- inline double s2r( const string &val ) — atof(val.c_str());
- inline string sTrm( const string &val, const string &cfg = " \n\t\r") —> TSYS::strTrim(val, cfg);
2.2. Îáúåêò ñîîáùåíèé ñèñòåìû (TMess)
Äàííûå:
Òèïû (óðîâíè) ñîîáùåíèé (enum — TMess::Type):
- Debug (0) — îòëàäêà;
- Info (1) — èíôîðìàöèÿ;
- Notice (2) — çàìå÷àíèå;
- Warning (3) — ïðåäóïðåæäåíèå;
- Error (4) — îøèáêà;
- Crit (5) — êðèòè÷åñêàÿ ñèòóàöèÿ;
- Alert (6) — òðåâîãà;
- Emerg (7) — àâàðèÿ.
Íàïðàâëåíèÿ ñîîáùåíèé (enum — TMess::Direct):
- DIR_SYSLOG (0x1) — â SYSLOG;
- DIR_STDOUT (0x2) — íà ñòàíäàðòíûé âûõîä;
- DIR_STDERR (0x4) — íà âûõîä ñòàíäàðòíûõ îøèáîê;
- DIR_ARCHIVE (0x8) — â àðõèâ ñîîáùåíèé.
Ñòðóêòóðà ñîîáùåíèÿ (class — TMess::SRec):
- time_t time; — âðåìÿ ñîîáùåíèÿ;
- int utime; — ìèêðîñåêóíäû âðåìåíè ñîîáùåíèÿ;
- string categ; — êàòåãîðèÿ ñîîáùåíèÿ (îáû÷íî ïóòü âíóòðè ñèñòåìû);
- int8_t level; — óðîâåíü ñîîáùåíèÿ;
- string mess; — ñîîáùåíèå.
Øàáëîíû:
- _(mess) — Îá¸ðòêà íàä ôóíêöèåé òðàíñëÿöèè ñîîáùåíèé äëÿ ïðåäîñòàâëåíèÿ ïðèíÿòîãî âî ìíîãèõ ïðîãðàììàõ âûçîâà ïåðåâîäà ñîîáùåíèé.
- trL(base,lng); trL(base,lng) — Îá¸ðòêè íàä ôóíêöèÿìè äèíàìè÷åñêîé òðàíñëÿöèè òåêñòîâûõ ïåðåìåííûõ ïî ÿçûêó è ïîëüçîâàòåëþ.
- trSetL(base,lng,mess); trSetL(base,lng,mess) — Îá¸ðòêè íàä ôóíêöèÿìè óñòàíîâêè äèíàìè÷åñêîé òðàíñëÿöèè òåêñòîâûõ ïåðåìåííûõ ïî ÿçûêó è ïîëüçîâàòåëþ.
- FTM(rec); FTM2(tm, utm) — Ïîëó÷åíèÿ ïîëíîãî âðåìåíè ñîîáùåíèÿ â ìèêðîñåêóíäàõ, èñïîëüçóÿ äâà ïîëÿ âðåìåíè ñòðóêòóðû ñîîáùåíèÿ.
- mess_lev() — Óðîâåíü ñîîáùåíèé ñèñòåìû. ×àñòî èñïîëüçóåòñÿ äëÿ äëÿ ïðîâåðêè ðåæèìà îòëàäêè (=Debug).
- message(cat,lev,fmt,args...) — Ôîðìèðîâàíèå ïîëíîãî ñîîáùåíèÿ.
- mess_debug(cat,fmt,args...) — Ôîðìèðîâàíèå îòëàäî÷íîãî ñîîáùåíèÿ.
- mess_info(cat,fmt,args...) — Ôîðìèðîâàíèå èíôîðìàöèîííîãî ñîîáùåíèÿ.
- mess_note(cat,fmt,args...) — Ôîðìèðîâàíèÿ ñîîáùåíèÿ - çàìå÷àíèÿ.
- mess_warning(cat,fmt,args...) — Ôîðìèðîâàíèå ïðåäóïðåäèòåëüíîãî ñîîáùåíèÿ.
- mess_err(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ îøèáêè.
- mess_crit(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ êðèòè÷åñêîãî ñîñòîÿíèÿ.
- mess_alert(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ òðåâîãè.
- mess_emerg(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ àâàðèè.
- message_(cat,lev,fmt,args...) — Ôîðìèðîâàíèå ïîëíîãî ñîîáùåíèÿ (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü è êàòåãîðèè îòëàäêè).
- mess_debug_(cat,fmt,args...) — Ôîðìèðîâàíèå îòëàäî÷íîãî ñîîáùåíèÿ (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü è êàòåãîðèè îòëàäêè).
- mess_info_(cat,fmt,args...) — Ôîðìèðîâàíèå èíôîðìàöèîííîãî ñîîáùåíèÿ (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
- mess_note_(cat,fmt,args...) — Ôîðìèðîâàíèÿ ñîîáùåíèÿ - çàìå÷àíèÿ (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
- mess_warning_(cat,fmt,args...) — Ôîðìèðîâàíèå ïðåäóïðåäèòåëüíîãî ñîîáùåíèÿ (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
- mess_err_(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ îøèáêè (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
- mess_crit_(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ êðèòè÷åñêîãî ñîñòîÿíèÿ (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
- mess_alert_(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ òðåâîãè (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
- mess_emerg_(cat,fmt,args...) — Ôîðìèðîâàíèå ñîîáùåíèÿ àâàðèè (èãíîðèðóåòñÿ âûáðàííûé óðîâåíü).
Ïóáëè÷íûå ìåòîäû:
2.3. Îáúåêò ïîäñèñòåìû (TSubSYS)
Íàñëåäóåò: | TCntrNode. |
Íàñëåäóåòñÿ: | TArchiveS, TProtocolS, TBDS, TFunctionS, TSeñurity, TModShedul, TTransportS, TUIS, TSpecialS, TControllerS. |
Ïóáëè÷íûå ìåòîäû:
- TSubSYS( const char *id, const char *name, bool mod = false ); — Èíèöèàëèçèðóþùèé êîíñòðóêòîð. Ïðèçíàê mod óêàçûâàåò, ÷òî ïîäñèñòåìà ìîäóëüíàÿ.
- string subId( ); — Èäåíòèôèêàòîð ïîäñèñòåìû.
- string subName( ); — Ëîêàëèçîâàííîå èìÿ ïîäñèñòåìû.
- bool subStartStat( ) const; — Ïðèçíàê èñïîëíåíèÿ ïîäñèñòåìû.
- bool subModule( ) const; — Ïðèçíàê ìîäóëüíîñòè ïîäñèñòåìû.
- virtual int subVer( ); — Âåðñèÿ ïîäñèñòåìû.
- virtual void subStart( ); — Çàïóñê ïîäñèñòåìû.
- virtual void subStop( ); — Îñòàíîâ ïîäñèñòåìû.
- void modList( vector<string> &list ); — Ñïèñîê list ìîäóëåé ìîäóëüíîé ïîäñèñòåìû.
- bool modPresent( const string &name ); — Ïðîâåðêà íà íàëè÷èå óêàçàííîãî ìîäóëÿ name.
- void modAdd( TModule *modul ); — Äîáàâëåíèå/ðåãèñòðàöèÿ ìîäóëÿ modul.
- void modDel( const string &name ); — Óäàëåíèå ìîäóëÿ name.
- AutoHD<TModule> modAt( const string &name ) const; — Ïîäêëþ÷åíèå ê ìîäóëþ name.
- virtual void perSYSCall( unsigned int cnt ); — Ïåðèîäè÷íûé âûçîâ èç ñèñòåìíîãî ïîòîêà, ñ ïåðèîäè÷íîñòüþ 10 ñåêóíä è ñåêóíäíûì ñ÷¸ò÷èêîì cnt.
- virtual bool rdProcess( XMLNode *reqSt = NULL ); — Îáðàáîòêà ðåçåðâèðîâàíèÿ ïîäñèñòåìû, âûçûâàåòñÿ èç ñèñòåìíîé çàäà÷è ðåçåðâèðîâàíèÿ.  reqSt ïåðåäà¸òñÿ ðåçóëüòàò çàïðîñà ñîñòîÿíèÿ ðåçåðâíîé ñòàíöèè ïî äàííîé ïîäñèñòåìå.
- TSYS &owner( ) const; — Ñèñòåìà - âëàäåëåö ïîäñèñòåìû.
2.4. Îáúåêò ìîäóëÿ (TModule)
Íàñëåäóåò: | TCntrNode. |
Íàñëåäóåòñÿ: | TProtocol, TTypeBD, TTypeArchive, TTypeTransport, TUI, Tspecial, TTypeDAQ. |
Äàííûå:
Ñòðóêòóðà äàííûõ èäåíòèôèöèðóþùàÿ ìîäóëü (class — TModule::SAt):
- SAt( const string &iid, const string &itype = "", int itver = 0 ); — èíèöèàëèçèðóþùèé êîíñòðóêòîð;
- bool operator==( const TModule::SAt &amst ) const; — ôóíêöèÿ ñðàâíåíèÿ èäåíòèôèêàòîðîâ ìîäóëåé;
- string id; — èäåíòèôèêàòîð ìîäóëÿ;
- string type; — òèï ìîäóëÿ (ïîäñèñòåìà);
- int tVer; — âåðñèÿ òèïà ìîäóëÿ (ïîäñèñòåìû) äëÿ êîòîðîé ìîäóëü ðàçðàáîòàí.
Ñòðóêòóðà ýêñïîðòèðóåìûõ ôóíêöèé (class — TModule::ExpFunc):
- string prot; — ïðîòîòèï ôóíêöèè;
- string dscr; — ëîêàëèçîâàííîå îïèñàíèå ôóíêöèè;
- void (TModule::*ptr)(); — îòíîñèòåëüíûé àäðåñ ôóíêöèè (îòíîñèòåëüíî îáúåêòà ìîäóëÿ).
Ïóáëè÷íûå ìåòîäû:
- TModule( const string &id ); — Èíèöèàëèçèðóþùèé êîíñòðóêòîð ìîäóëÿ id.
- string modId( ); — Èäåíòèôèêàòîð ìîäóëÿ.
- string modName( ); — Ëîêàëèçîâàííîå èìÿ ìîäóëÿ.
- virtual void modStart( ); — Çàïóñê ìîäóëÿ.
- virtual void modStop( ); — Îñòàíîâ ìîäóëÿ.
- virtual void modInfo( vector<string> &list ); — Ñïèñîê list èíôîðìàöèîííûõ ýëåìåíòîâ ìîäóëÿ.
- virtual string modInfo( const string &name ); — Ïîëó÷åíèå ñîäåðæèìîãî óêàçàííîãî èíôîðìàöèîííîãî ýëåìåíòà name.
- virtual void perSYSCall( unsigned int cnt ); — Ïåðèîäè÷íûé âûçîâ èç ñèñòåìíîãî ïîòîêà, ñ ïåðèîäè÷íîñòüþ 10 ñåêóíä è ñåêóíäíûì ñ÷¸ò÷èêîì cnt.
- void modFuncList( vector<string> &list ); — Ñïèñîê list ýêñïîðòèðóåìûõ ôóíêöèé ìîäóëÿ.
- bool modFuncPresent( const string &prot ); — Ïðîâåðêà íà íàëè÷èå óêàçàííîé ôóíêöèè ïî å¸ ïðîòîòèïó prot.
- ExpFunc &modFunc( const string &prot ); — Ïîëó÷èòü èíôîðìàöèþ îá ýêñïîðòèðóåìîé ôóíêöèè ìîäóëÿ prot.
- void modFunc( const string &prot, void (TModule::**offptr)() ); — Ïîëó÷åíèå îòíîñèòåëüíîãî àäðåñà offptr ýêñïîðòèðóåìîé ôóíêöèè prot.
- const char *I18N( const char *mess ); — Ëîêàëèçàöèÿ ìîäóëüíîãî ñîîáùåíèÿ mess â ñîîòâåòñòâèè ñ òåêóùåé ëîêàëüþ.
- TSubSYS &owner( ) const; — Ïîäñèñòåìà - âëàäåëåö ìîäóëÿ.
Çàùèù¸ííûå àòðèáóòû:
- string mModName; — Èìÿ ìîäóëÿ.
- string mModDescr; — Îïèñàíèå ìîäóëÿ.
- string mModType; — Òèï ìîäóëÿ.
- string mModVers; — Âåðñèÿ ìîäóëÿ.
- string mModAutor; — Àâòîð ìîäóëÿ.
- string mModLicense; — Ëèöåíçèÿ ìîäóëÿ.
- string mModSource; — Èñòî÷íèê/ïðîèñõîæäåíèå ìîäóëÿ.
Çàùèù¸ííûå ìåòîäû:
- void modInfoMainSet( const string &name, const string &type, const string &vers, const string &author, const string &descr, const string &license, const string &source ); — Óñòàíîâêà îáùåé èíôîðìàöèè ìîäóëÿ.
- void modFuncReg( ExpFunc *func ); — Ðåãèñòðàöèÿ ýêñïîðòèðóåìûõ ìîäóëåì ôóíêöèé.