<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><pre style="word-wrap: break-word;"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">If you look at a typical handler, it looks like this:</span></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">CASE M OF</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">| Oberon.InputMsg:</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">IF <a href="http://M.id">M.id</a> = Oberon.track THEN Edit(...) </span></font><span style="font-family: UICTFontTextStyleBody; white-space: normal; background-color: rgba(255, 255, 255, 0);">ELSIF <a href="http://M.id">M.id</a> = Oberon.consume THEN Write(...) END</span></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">| Oberon.ControlMsg:</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">IF <a href="http://M.id">M.id</a> = Oberon.defocus THEN Defocus(F)
        ELSIF <a href="http://M.id">M.id</a> = Oberon.neutralize THEN Neutralize(F)
        END</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">| </span></font><span style="white-space: normal; background-color: rgba(255, 255, 255, 0); font-family: UICTFontTextStyleBody;">Oberon.SelectionMsg:
        GetSelection(...)</span></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">|
      Oberon.CopyMsg: Copy(F, F1)</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">|
      MenuViewers.ModifyMsg: Modify(...)</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">|
      CopyOverMsg: CopyOver(...)</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">|
      UpdateMsg: Update(...)</span></font></pre><pre style="word-wrap: break-word;"><font face="UICTFontTextStyleBody"><span style="white-space: normal; background-color: rgba(255, 255, 255, 0);">END;</span></font></pre><div dir="ltr">Assume you would like to add a new module RealTimeFrames.Mod you could indeed declare a new message type like so</div><div dir="ltr">TYPE</div><div dir="ltr">TimerMsg = RECORD (Display.FrameMsg) END</div><div dir="ltr"><br></div><div dir="ltr">and catch it in your handler</div><div dir="ltr">...</div><div dir="ltr">| UpdateMsg: Update(...)</div><div dir="ltr">| TimerMsg: UpdateTrend(..)</div><div dir="ltr">END;</div><div dir="ltr"><br></div><div dir="ltr">Obviously you would also need some additional code to generate these messages.</div><div dir="ltr"><br></div><div dir="ltr">Seeing all this effort,  I could imagine, that installing UpdateTrend() in the Oberon loop is much simpler.</div><div dir="ltr"><br><div>br</div><div>Jörg</div></div><div dir="ltr"><br>Am 20.03.2019 um 13:33 schrieb Tomas Kral <<a href="mailto:thomas.kral@email.cz">thomas.kral@email.cz</a>>:<br><br></div><blockquote type="cite"><div dir="ltr"><span>On Wed, 20 Mar 2019 12:48:02 +0100</span><br><span>Tomas Kral <<a href="mailto:thomas.kral@email.cz">thomas.kral@email.cz</a>> wrote:</span><br><span></span><br><blockquote type="cite"><span>Imagine situation, with real time data input, and graph trending,</span><br></blockquote><blockquote type="cite"><span>with reasonable update on [EDIT] second basis.</span><br></blockquote><span></span><br><span>I can also think of, that each trend, or graph, installs its own update</span><br><span>task or share a common task in a pool.</span><br><span></span><br><span>Cannot tell what is preferred way of doing that.</span><br><span></span><br><span>-- </span><br><span>Tomas Kral <<a href="mailto:thomas.kral@email.cz">thomas.kral@email.cz</a>></span><br><span>--</span><br><span><a href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems</span><br><span><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a></span><br></div></blockquote></body></html>