Hi Jeff,<br><br><div><span class="gmail_quote">On 29/08/06, <b class="gmail_sendername">Jeff Crane</b> <<a href="mailto:jefcrane@yahoo.com">jefcrane@yahoo.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I have no book and have taken no class. I'm in<br>southern california and have been fiddling with erlang<br>for a month. I understand the PURPOSE of a supervisor.<br>To monitor child(?) process states.</blockquote><div><br>
It is not just to monitor. It is it monitor and restart processes as specified. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
This is the only implementation of Supervisor<br>behaviour I can find (it's near the bottom).<br><br><a href="http://www.matt-mcdonnell.com/code/code_erl/erl_course/erl_course.html">http://www.matt-mcdonnell.com/code/code_erl/erl_course/erl_course.html
</a><br><br>Is this ms.erl an accurate representation of a<br>Supervisor implementation?</blockquote><div><br>Have you seen supervisor.erl in the stdlib application which comes with Erlang/OTP?<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I can't find any documentation for an erlang<br>supervisor. The examples I can find on the web:</blockquote><div><br><a href="http://www.erlang.org/doc/doc-5.5/lib/stdlib-1.14/doc/html/supervisor.html">http://www.erlang.org/doc/doc-5.5/lib/stdlib-1.14/doc/html/supervisor.html
</a> <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">From an erlang beginner's perspective this is a<br>completely uncomprehensible mechanism. For example:
<br><br><a href="http://www.erlang.org/doc/doc-5.4.12/doc/design_principles/sup_princ.html">http://www.erlang.org/doc/doc-5.4.12/doc/design_principles/sup_princ.html</a><br><br>-module(ch_sup).<br>-behaviour(supervisor). %% Why can't a I find the
<br>actual implementation of this behaviour, defined line<br>by line so I understand what's going on?<br><br>-export([start_link/0]).<br>-export([init/1]).<br><br>start_link() -> %% Where, when, why would I call this?</blockquote>
<div><br>This is called by the  supervisor module.   Basically, if you want a process to be supervised, you write a child specification. From the documentation, it looks like this:<br><br><pre>child_spec() = {Id,StartFunc,Restart,Shutdown,Type,Modules}
<br> Id = term()<br> StartFunc = {M,F,A}<br>  M = F = atom()<br>  A = [term()]<br> Restart = permanent | transient | temporary<br> Shutdown = brutal_kill | int()>=0 | infinity<br> Type = worker | supervisor<br> Modules = [Module] | dynamic
<br>  Module = atom()</pre><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I can't understand how to add a supervisor without a
<br>solid understanding of how they work. This is one of<br>many problems I have had trying to learn erlang.</blockquote><div><br>Have a read through the documentation and I'm sure it'll answer a lot of your questions. All OTP behaviours are part of the stdlib application. 
<br><br>cheers<br>Chandru<br><br></div><br></div>