Hi Zvi,<br><br>Check out the attached gen_server_light module. :)<br>IIRC it differs from gen_server in that the handle_call/3 supports a new return value:<br>    {noreply, NewState, {call_and_hibernate, {Server, Req, ReqTimeout}}};<br>

which instructs it to issue a call to another server and then hibernate while waiting for the reply.<br>When that reply comes (or the ReqTimeout is reached) handle_reply/2 is called enabling the<br>caller to proceed with what it was doing.<br>

<br>Hope the code still works. :)<br><br>Cheers,<br>:Davide<br><br><div class="gmail_quote">On Sun, Nov 7, 2010 at 3:03 PM, Ulf Wiger <span dir="ltr"><<a href="mailto:ulf.wiger@erlang-solutions.com">ulf.wiger@erlang-solutions.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><br>
Hi Zvi,<br>
<br>
Actually, nowadays, gen_server supports 'hibernate' as a special<br>
value of the internal timeout, so your server callbacks can instruct<br>
the main loop to go into hibernation between messages.<br>
<br>
It is true that hibernate/3 doesn't have a timeout, but OTOH, it is<br>
easy enough to start a timer that will send a message, bringing<br>
you out of hibernation, after a specified time.<br>
<br>
BR,<br>
Ulf W<br>
<div><div></div><div class="h5"><br>
On 6 Nov 2010, at 15:51, Zvi wrote:<br>
<br>
> Hi,<br>
> I re-reading Erlang at Facebook slides. And found this. Is this still<br>
> an issue?<br>
><br>
> Zvi<br>
><br>
> "Hibernation<br>
> ▪<br>
> Drastically shrink memory usage with erlang:hibernate/3<br>
> ▪ Throws away the call stack<br>
> ▪ Minimizes the heap<br>
> ▪ Enters a wait state for new messages<br>
> ▪ “Jumps” into a passed-in function for a received message<br>
> ▪ Perfect for a long-running, idling HTTP request handler<br>
> ▪ But ... not compatible with gen_server:call (and gen_server:reply)<br>
> ▪ gen_server:call has its own receive() loop<br>
> ▪ hibernate() doesn’t support have an explicit timeout<br>
> ▪ Fixed with a few hours and a look at gen.erl"<br>
><br>
> ________________________________________________________________<br>
> erlang-questions (at) <a href="http://erlang.org" target="_blank">erlang.org</a> mailing list.<br>
> See <a href="http://www.erlang.org/faq.html" target="_blank">http://www.erlang.org/faq.html</a><br>
> To unsubscribe; mailto:<a href="mailto:erlang-questions-unsubscribe@erlang.org">erlang-questions-unsubscribe@erlang.org</a><br>
><br>
<br>
</div></div><font color="#888888">Ulf Wiger, CTO, Erlang Solutions, Ltd.<br>
<a href="http://erlang-solutions.com" target="_blank">http://erlang-solutions.com</a><br>
</font><div><div></div><div class="h5"><br>
<br>
<br>
<br>
________________________________________________________________<br>
erlang-questions (at) <a href="http://erlang.org" target="_blank">erlang.org</a> mailing list.<br>
See <a href="http://www.erlang.org/faq.html" target="_blank">http://www.erlang.org/faq.html</a><br>
To unsubscribe; mailto:<a href="mailto:erlang-questions-unsubscribe@erlang.org">erlang-questions-unsubscribe@erlang.org</a><br>
<br>
</div></div></blockquote></div><br>