{"id":5078,"date":"2016-06-02T02:30:03","date_gmt":"2016-06-02T02:30:03","guid":{"rendered":"http:\/\/anthroponaute.fr\/blog-informatique\/?p=5078"},"modified":"2019-03-28T13:01:36","modified_gmt":"2019-03-28T13:01:36","slug":"une-classe-delayedtimermanager-pour-gerer-les-delais-de-temporisation","status":"publish","type":"post","link":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/?p=5078","title":{"rendered":"Une classe DelayedTimerManager pour g\u00e9rer les d\u00e9lais de temporisation"},"content":{"rendered":"<p><a href=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/06\/unnamed.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-5084\" src=\"https:\/\/anthropoya.cluster014.ovh.net\/blog-informatique\/wp-content\/uploads\/2016\/06\/unnamed.png\" alt=\"unnamed\" width=\"210\" height=\"210\" srcset=\"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/06\/unnamed.png 300w, https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/wp-content\/uploads\/2016\/06\/unnamed-150x150.png 150w\" sizes=\"(max-width: 210px) 100vw, 210px\" \/><\/a><\/p>\n<p><strong>Intro :<\/strong><\/p>\n<p>Parfois nous avons besoin, dans le code, d&rsquo;<strong>appeler des fonctions \/ m\u00e9thodes<\/strong> \u00e0 un certain <strong>intervalle de temps<\/strong> !<\/p>\n<p><strong>Pr\u00e9requis : <\/strong><\/p>\n<p>&#8211; Savoir lire du <em>C++<\/em><\/p>\n<p><strong>Explications :<\/strong><\/p>\n<p>Voici le fichier DelayedTimerManager.h :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#ifndef DELAYED_TIMER_MANAGER_H\r\n#define DELAYED_TIMER_MANAGER_H\r\n\r\n#include &quot;Singleton.h&quot;\r\n\r\n#include &lt;map&gt;\r\n\r\nclass DelayedTimerManager : public Singleton&lt;DelayedTimerManager&gt;\r\n{\r\npublic:\r\n\u00a0\u00a0 \u00a0struct TimerData\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0TimerData() : iElapsedTime(0), iLastTime(0), iWaitingTime(0)\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0uint64 iElapsedTime;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0uint64 iLastTime;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0  uint32 iWaitingTime;\r\n\u00a0\u00a0 \u00a0};\r\n\r\n\u00a0\u00a0 \u00a0DelayedTimerManager();\r\n\u00a0\u00a0 \u00a0virtual ~DelayedTimerManager();\r\n\r\n\u00a0\u00a0 \u00a0bool TimerWait(const std::string&amp; sTimerName);\r\n\r\n\u00a0\u00a0 \u00a0void RegisterTimer(const std::string&amp; sTimerName, uint32 iWaitingTime);\r\n\u00a0\u00a0 \u00a0void UpdateTimer(const std::string&amp; sTimerName, uint32 iWaitingTime);\r\n\r\n\u00a0\u00a0 \u00a0void ResetTimer(const std::string&amp; sTimerName);\r\n\r\nprivate:\r\n\u00a0\u00a0 \u00a0std::map&lt;std::string, TimerData&gt; m_timers;\r\n};\r\n\r\n#endif\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Voici le contenu du fichier DelayedTimerManager.cpp :<\/p>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\r\n#include &quot;DelayedTimerManager.h&quot;\r\n\r\n#include &lt;string&gt;\r\n#include &lt;Windows.h&gt;\r\n\r\ntemplate&lt;&gt; DelayedTimerManager* Singleton&lt;DelayedTimerManager&gt;::ms_instance = nullptr;\r\n\r\nDelayedTimerManager::DelayedTimerManager()\r\n{\r\n}\r\n\r\nDelayedTimerManager::~DelayedTimerManager()\r\n{\r\n}\r\n\r\nbool DelayedTimerManager::TimerWait(const std::string&amp; sTimerName)\r\n{\r\n\u00a0\u00a0 \u00a0TimerData* pTimerData = &amp;m_timers[sTimerName];\r\n\r\n\u00a0\u00a0 \u00a0uint32 iElapsedTime = GetTickCount() - pTimerData-&gt;iLastTime;\r\n\u00a0\u00a0 \u00a0uint32 iWaitingTime = pTimerData-&gt;iWaitingTime;\r\n\r\n\u00a0\u00a0 \u00a0if (iElapsedTime &gt; iWaitingTime)\r\n\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0pTimerData-&gt;iLastTime = GetTickCount();\u00a0\u00a0 \u00a0\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0return true;\r\n\u00a0\u00a0 \u00a0}\r\n\r\n\u00a0\u00a0 \u00a0return false;\r\n}\r\n\r\nvoid DelayedTimerManager::RegisterTimer(const std::string&amp; sTimerName, uint32 iWaitingTime)\r\n{\r\n\u00a0\u00a0 \u00a0TimerData timerData;\r\n\u00a0\u00a0 \u00a0timerData.iWaitingTime = iWaitingTime;\r\n\r\n\u00a0\u00a0 \u00a0m_timers[sTimerName] = timerData;\r\n}\r\n\r\nvoid DelayedTimerManager::ResetTimer(const std::string&amp; sTimerName)\r\n{\r\n\u00a0\u00a0 \u00a0TimerData* pTimerData = &amp;m_timers[sTimerName];\r\n\r\n\u00a0\u00a0 \u00a0pTimerData-&gt;iLastTime = 0;\r\n}\r\n\r\nvoid DelayedTimerManager::UpdateTimer(const std::string&amp; sTimerName, uint32 iWaitingTime)\r\n{\r\n\u00a0\u00a0 \u00a0TimerData* pTimerData = &amp;m_timers[sTimerName];\r\n\r\n\u00a0\u00a0 \u00a0pTimerData-&gt;iWaitingTime = iWaitingTime;\r\n}\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>R\u00e9sum\u00e9 :<\/strong><\/p>\n<p>Nous avons pr\u00e9senter le code pour g\u00e9rer un syst\u00e8me de <em>temporisation<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro : Parfois nous avons besoin, dans le code, d&rsquo;appeler des fonctions \/ m\u00e9thodes \u00e0 un certain intervalle de temps ! Pr\u00e9requis : &#8211; Savoir lire du C++ Explications : Voici le fichier DelayedTimerManager.h : &nbsp; Voici le contenu du fichier DelayedTimerManager.cpp : &nbsp; R\u00e9sum\u00e9 : Nous avons pr\u00e9senter le code pour g\u00e9rer un syst\u00e8me [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/5078"}],"collection":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5078"}],"version-history":[{"count":13,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/5078\/revisions"}],"predecessor-version":[{"id":5804,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=\/wp\/v2\/posts\/5078\/revisions\/5804"}],"wp:attachment":[{"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.la-porte-des-nebuleuses.net\/blog-informatique\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}