[RFC] cTimeMs::Elapsed() auch für Timeout-Timer nutzen?

  • Ich benötige eine Möglichkeit, bei einem cTimeMs-Timer, der mit Set(ms) (mit ms > 0) gesetzt wird, nicht nur zu erkennen, wann er abgelaufen ist (TimedOut()), sondern für den Fall, dass er noch nicht abgelaufen ist, wie viel Zeit seit dem letzten Set(ms) vergangen ist.

    Die Frage ist nun, ob ich mich trauen kann, cTimeMs::Elapsed() so zu ändern, dass es diese Zeit liefert (bis jetzt liefert es in diesem Fall die verbleibende Zeit mit negativem Vorzeichen), oder ob ich dafür eine neue Funktion (z.B. cTimeMs::Passed()) einführen sollte. In der Beschreibung heißt es zwar

    void Set(int Ms = 0);
         ...
         ///< Depending on the value of Ms, an object of cTimeMs can handle either
         ///< timeouts or elapsed times, not both at the same time.

    so dass eigentlich bei einem Timeout-Timer Elapsed() (bisher) nicht sinnvoll benutzt werden konnte. Aber ich weiß ja nicht, ob das nicht vielleicht doch jemand benutzt, und der würde bei einer solchen Änderung auf die Nase fliegen.

    Daher meine Frage: kann ich es wagen und die "schöne" Lösung einbauen (und im Zweifelsfall darauf bestehen, dass es ja bisher so beschrieben war, dass nicht beides gleichzeitig geht), oder auf Nummer Sicher gehen und eine neue Funktion dafür einbauen?

  • Nachdem ich da nun eine Nacht drüber geschlafen habe komme ich zu dem Schluss, dass wohl kaum jemand Elapsed() benutzt haben wird, wenn er vorher Set(ms) mit ms>0 aufgerufen hat.
    Ich werde es daher so ändern:

    Damit liefert Elapsed() immer die Zeit seit dem letzten Aufruf von Set() (egal ob der Parameter größer als 0 war).
    Zusätzlich gibt es noch Remaining(), was vielleicht auch hilfreich sein kann.
    Mit Reset() kann man den Timer auf den vorher gesetzten Wert zurücksetzen, ohne den Wert explizit nochmal angeben zu müssen.

  • dass wohl kaum jemand Elapsed() benutzt haben wird, wenn er vorher Set(ms) mit ms>0 aufgerufen hat

    Ich hatte es im Sommer mal benutzt, um das Timing des SATIP-Plugins zu debuggen (trotz des Kommentars im Header File ;), hat ja funktioniert). Das ist aber nie in einer produktiven Version gelandet.
    Ansonsten ist mir bei keinem der Plugins, die ich verwende etwas aufgefallen, was dagegen sprechen würde. Falls es doch irgendwo hakt gibt's ja dann mit der obigen Änderung Alternativen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!