<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Ok, thanks a lot!</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I this new way do I need to setup a timer for each client or only one for everyone?</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
The generated callback is LWS_CALLBACK_TIMER or <span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; background-color: rgb(255, 255, 255); display: inline !important">LWS_CALLBACK_USER
 (eg) ?</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; background-color: rgb(255, 255, 255); display: inline !important"><br>
</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; background-color: rgb(255, 255, 255); display: inline !important">Regards</span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color: rgb(50, 49, 48); font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; font-size: 14.6667px; background-color: rgb(255, 255, 255); display: inline !important"><br>
</span></div>
<div>
<div id="appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Da:</b> Andy Green <andy@warmcat.com><br>
<b>Inviato:</b> mercoledì 24 luglio 2019 17:34<br>
<b>A:</b> libwebsockets@ml.libwebsockets.org <libwebsockets@ml.libwebsockets.org>; Stefano Mora <stefano.mora@newdep.com>; libwebsockets@ml.libwebsockets.org <libwebsockets@ml.libwebsockets.org><br>
<b>Oggetto:</b> Re: [Libwebsockets] Question about timer</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText"><br>
<br>
On July 24, 2019 7:57:29 AM PDT, Stefano Mora <stefano.mora@newdep.com> wrote:<br>
>Hi all,<br>
>in my application I start the timer with:<br>
>   lws_set_timer_usecs( wsi, TIMER_USECS);<br>
><br>
>and this is ok.<br>
>A second client connects the server and, since it is running, it do not<br>
>start another timer.<br>
>This is ok and the timer continues to flow thanks to:<br>
><br>
>case  LWS_CALLBACK_TIMER:<br>
> my_timer_handler();<br>
> lwsl_user("LWS_CB_TIMER t:%d\n", engineData.timer);<br>
> lws_set_timer_usecs( wsi, engineData.timer ? TIMER_USECS : -1);<br>
> break;<br>
><br>
><br>
>But, when a client disconnects the TIMER 'reason' stops to coming (the<br>
>last engineData.timer I see is 1) and the other client is running<br>
>without the timer.<br>
>I'm pretty sure I do not disable the timer.<br>
><br>
>I my understanding the timer is a server-wide object, I mean it not<br>
>referred to a particular client, is it?<br>
<br>
No... this "hi res" timer is available for each wsi... there is actually a single sorted queue of pending timers on each pt... this is used to restrict the sleep time for the event loop wait to that of the earliest pending timer.<br>
<br>
But any wsi can participate on it independently.  Each wsi only sees hires timer callbacks that he personally asked for, hence the api takes the wsi as the argument.<br>
<br>
There's a separate second-resolution timer that belongs to the vhost - protocol combination instead of each wsi that sounds more like what you want<br>
<br>
<a href="https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/lws-timeout-timer.h#n140-163">https://libwebsockets.org/git/libwebsockets/tree/include/libwebsockets/lws-timeout-timer.h#n140-163</a><br>
<br>
Using that api either wsi instance will be setting a timer that will fire independent of their own lifecycle.  Note that because of that, when it fires and calls back with 'reason' (eg, LWS_CALLBACK_USER) it is called with a fake wsi that only has context,
 vhost and protocol set on it.  By then, there may no longer be any live wsis using it, but that won't stop it coming.  So it's useful for eg, client connect retries etc.<br>
<br>
>Any idea why the timer stops?<br>
<br>
IIUI it's correct, you want the other timer api.<br>
<br>
-Andy<br>
<br>
>Thanks, regards<br>
><br>
><br>
><br>
><br>
>[1456477059919_newdep.png]<br>
>Stefano Mora / SW Engineer<br>
>stefano.mora@newdep.com<mailto:stefano.mora@newdep.com><br>
>NEWDEP S.r.l. – SOFTWARE & ENGINEERING SERVICES<br>
>Office: +39 0521  1756855/ Fax: +39 0521 631414<br>
>Sede legale ed operativa: Via Monte Aquila, 2/B - 43124 Parma - ITALY<br>
>Website: <a href="http://www.newdep.com<http://www.newdep.com/">http://www.newdep.com<http://www.newdep.com/</a>><br>
>Il presente messaggio, corredato dei relativi allegati, contiene<br>
>informazioni strettamente riservate ai sensi del D.L.gs. 196/2003 ed è<br>
>destinato esclusivamente ai destinatari. Chiunque ricevesse questo<br>
>messaggio per errore è pregato di darne gentilmente comunicazione al<br>
>mittente, di non copiarlo, divulgarlo o distribuirlo, nonchè di<br>
>distruggerlo.<br>
>This communication may contain confidential and/or otherwise<br>
>proprietary material and is thus for use only by the intended<br>
>recipient. If you received this in error, please contact the sender and<br>
>delete the e-mail and its attachments from all computers.<br>
</div>
</span></font></div>
</div>
</body>
</html>