<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Click Break, then go in Window, Debug, Stack Trace (or something similar, I don't have any VS nearby),&nbsp;then&nbsp;copy&nbsp;paste&nbsp;that.<div><div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="font-size: 12px; "><div>Mathieu Rene</div><div>Avant-Garde Solutions Inc</div><div>Office: + 1 (514) 664-1044 x100</div><div>Cell: +1 (514) 664-1044 x200</div><div><a href="mailto:mrene@avgs.ca">mrene@avgs.ca</a></div><div><br></div><div><br></div></span></div></div></span><br class="Apple-interchange-newline"> </div><br><div><div>On 8-Sep-09, at 10:30 PM, Josh Rivers wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Here is the error I get with the loop I mentioned. -Josh</div><span>&lt;Capture.PNG&gt;</span><br><br><div class="gmail_quote">On Tue, Sep 8, 2009 at 5:05 AM, Michael Giagnocavo <span dir="ltr">&lt;<a href="mailto:mgg@giagnocavo.net">mgg@giagnocavo.net</a>&gt;</span> wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> <div lang="EN-US" link="blue" vlink="purple"> <div><p><span style="font-size:11.0pt;color:#1F497D">Hi,</span></p><div><span style="font-size:11.0pt;color:#1F497D">&nbsp;</span><br class="webkit-block-placeholder"></div><p><span style="font-size:11.0pt;color:#1F497D">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Can you please elaborate on the crash you receive when you queue a thread during load?</span></p><div><span style="font-size:11.0pt;color:#1F497D">&nbsp;</span><br class="webkit-block-placeholder"></div><p><span style="font-size:11.0pt;color:#1F497D">Thanks,</span></p><p><span style="font-size:11.0pt;color:#1F497D">Michael&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p><div><span style="font-size:11.0pt;color:#1F497D">&nbsp;</span><br class="webkit-block-placeholder"></div> <div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in"><p><b><span style="font-size:10.0pt">From:</span></b><span style="font-size:10.0pt"> <a href="mailto:freeswitch-users-bounces@lists.freeswitch.org" target="_blank">freeswitch-users-bounces@lists.freeswitch.org</a> [mailto:<a href="mailto:freeswitch-users-bounces@lists.freeswitch.org" target="_blank">freeswitch-users-bounces@lists.freeswitch.org</a>] <b>On Behalf Of </b>Josh Rivers<br> <b>Sent:</b> Tuesday, September 08, 2009 12:22 AM<br> <b>To:</b> <a href="mailto:freeswitch-users@lists.freeswitch.org" target="_blank">freeswitch-users@lists.freeswitch.org</a><br> <b>Subject:</b> Re: [Freeswitch-users] Subscribing to events in managed C# / .NET</span></p> </div><div><div></div><div class="h5"><div>&nbsp;<br class="webkit-block-placeholder"></div><p>Thanks for the response!</p> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>I have tried putting a long-running loop here, but then it blocks anything else managed from happening:</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div> <div><p>&nbsp;&nbsp; public class TestLoop : ILoadNotificationPlugin</p> </div> <div><p>&nbsp;&nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public bool Load()</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EventConsumer con = new EventConsumer("all", "");</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (true)</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Event ev = con.pop(0);</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Log.WriteLine(LogLevel.Notice, "Event: " + ev.serialized_string);</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;freeswitch.msleep(100);</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p> </div> <div><p>&nbsp;&nbsp; &nbsp;}</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>However, if I fork off a thread here, freeswitch crashes:</p> </div> <div> <div><p>&nbsp;&nbsp; &nbsp;public class TestLoop : ILoadNotificationPlugin</p> </div> <div><p>&nbsp;&nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;public bool Load()</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ThreadPool.QueueUserWorkItem((o) =&gt;</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Log.WriteLine(LogLevel.Notice, "Thread Starting. ");</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;EventConsumer con = new EventConsumer("all", "");</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while (true)</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Event ev = con.pop(0);</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Log.WriteLine(LogLevel.Notice, "Event: " + ev.serialized_string);</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;freeswitch.msleep(100);</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;});</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return true;</p> </div> <div><p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</p> </div> <div><p>&nbsp;&nbsp; &nbsp;}</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>It doesn't look like this is a good place to start a long-running process?</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>Thanks!</p> </div> <div><p>Josh</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> </div> </div> <div> <div><p>On Mon, Sep 7, 2009 at 11:05 PM, Raffaele P. Guidi &lt;<a href="mailto:raffaele.p.guidi@gmail.com" target="_blank">raffaele.p.guidi@gmail.com</a>&gt; wrote:</p><p>Yes!</p> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div> <div><p><span style="font-family:&quot;Courier New&quot;">public class LoadDemo : ILoadNotificationPlugin {</span></p> </div> <div><p><span style="font-family:&quot;Courier New&quot;">&nbsp;&nbsp; &nbsp;public bool Load() {</span></p> </div> <div><p><span style="font-family:&quot;Courier New&quot;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Log.WriteLine(LogLevel.Notice, "LoadDemo running.");</span></p> </div> <div><p><span style="font-family:&quot;Courier New&quot;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return true;</span></p> </div> <div><p><span style="font-family:&quot;Courier New&quot;">&nbsp;&nbsp; &nbsp;}</span></p> </div> <div><p><span style="font-family:&quot;Courier New&quot;">}</span></p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>this example is from Michael Giagnocavo's Demo.csx which you can find into the mod_managed svn.</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>And let me add that works like a charm :)</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>Ciao,</p> </div> <div><p>&nbsp;&nbsp; Raffaele</p> </div><div>&nbsp;<br class="webkit-block-placeholder"></div> <div> <div> <div><p>On Sun, Sep 6, 2009 at 22:50, Josh Rivers &lt;<a href="mailto:josh@radianttiger.com" target="_blank">josh@radianttiger.com</a>&gt; wrote:</p> </div> </div> <blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in"> <div> <div> <div><p>Is there a way to start this when FreeSWITCH starts? The lua and perl modules have a 'startup-script' configuration preference. Is there something similar in mod_managed? Or is there a way to have an api command executed at a startup?</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>&lt;quote author="Phillip Jones"&gt;</p> </div> <div> <div> <div><p>Exactly what I was after - thank you!</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>On Thu, Sep 3, 2009 at 1:54 PM, Jeff Lenk &lt;<a href="mailto:jlenk@frontiernet.net" target="_blank">jlenk@frontiernet.net</a>&gt; wrote:</p> </div> <div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> <div><p>&gt;&nbsp;</p> </div> <div><p>&gt; try something like this</p> </div> <div><p>&gt;&nbsp;</p> </div> <div><p>&gt; EventConsumer con = new EventConsumer("all", "");</p> </div> <div><p>&gt; Event ev = con.pop(0);</p> </div> <div><p>&gt;&nbsp;</p> </div> <div><p>&gt; see lua sample -</p> </div> <div><p>&gt; <a href="http://wiki.freeswitch.org/wiki/Lua#freeswitch.EventConsumer" target="_blank">http://wiki.freeswitch.org/wiki/Lua#freeswitch.EventConsumer</a></p> </div> <div><p>&gt;&nbsp;</p> </div> <div><p>&gt;&nbsp;</p> </div> <div><p>&gt; Phillip Jones-2 wrote:</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; Hi there,</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; mod_managed exposes EventReceivedFunction such that:</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; &nbsp;Session.EventReceivedFunction = (e) =&gt;</p> </div> <div><p>&gt; &gt; &nbsp;{</p> </div> <div><p>&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;Log.WriteLine(LogLevel.Alert, "Received Event {0}", e.ToString());</p> </div> <div><p>&gt; &gt; &nbsp; &nbsp; &nbsp; &nbsp;return "";</p> </div> <div><p>&gt; &gt; &nbsp;};</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; should trap all events to which i subscribe.</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; But how do I subscribe to events? What is the .NET / managed equivalent</p> </div> <div><p>&gt; &gt; of:</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; switch_event_bind(const char *id, switch_event_types_t event, const char</p> </div> <div><p>&gt; &gt; *subclass_name, switch_event_callback_t callback, void *user_data);</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt; Thank you!</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt;</p> </div> <div><p>&gt; &gt;</p> </div> </div> </div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> </div><p style="margin-bottom:12.0pt">_______________________________________________<br> FreeSWITCH-users mailing list<br> <a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br> <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br> UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br> <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a></p> </blockquote> </div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div><p style="margin-bottom:12.0pt"><br> _______________________________________________<br> FreeSWITCH-users mailing list<br> <a href="mailto:FreeSWITCH-users@lists.freeswitch.org" target="_blank">FreeSWITCH-users@lists.freeswitch.org</a><br> <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br> UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br> <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a></p> </div><div>&nbsp;<br class="webkit-block-placeholder"></div> </div> </div></div></div> </div> <br>_______________________________________________<br> FreeSWITCH-users mailing list<br> <a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br> <a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br> UNSUBSCRIBE:<a href="http://lists.freeswitch.org/mailman/options/freeswitch-users" target="_blank">http://lists.freeswitch.org/mailman/options/freeswitch-users</a><br> <a href="http://www.freeswitch.org" target="_blank">http://www.freeswitch.org</a><br> <br></blockquote></div><br> _______________________________________________<br>FreeSWITCH-users mailing list<br><a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users<br>UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users<br>http://www.freeswitch.org<br></blockquote></div><br></div></div></body></html>