<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 9, 2013 at 10:15 AM, Kevin Harwell <span dir="ltr"><<a href="mailto:kharwell@digium.com" target="_blank" onclick="window.open('https://mail.google.com/mail/?view=cm&tf=1&to=kharwell@digium.com&cc=&bcc=&su=&body=','_blank','location=yes,menubar=yes,resizable=yes,width=800,height=600');return false;">kharwell@digium.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, 2013-12-09 at 09:17 -0700, George Joseph wrote:<br>
><br>> If Asterisk were completely OO we could create object factories,<br>
> interfaces and implementation classes that hide all of that.<br>
>  Unfortunately, it's not.   Also unfortunately, the needs of human<br>
> clients are different than system clients.   Back to identify as the<br>
> example...  Even though endpoint doesn't have a pointer to the<br>
> identify, the endpoint formatter still has to know about it<br>
> specifically because it has to place its output in a consistent place<br>
> relative to other objects.  It can't just iterate through a list of<br>
> formatters because the order could be different based on module load<br>
> order.   That'd be OK for a system client but not for a human client.<br>
<br>
This is true.  With AMI the order doesn't matter, but I can see how it<br>
would with CLI stuff.  Sounds like an ordered list of some sort is<br>
warranted.<br>
><br>
<br></blockquote><div>Exactly, now who determines the order?  I think it has to be the parent because the parent determines the context in which the children are displayed and the parent has to provide the child objects anyway.  The children can't determine order relative to each other without knowing way more than they should.</div>
<div><br></div><div>So, for the CLI I'll move to the registration scheme where objects register their handlers and the CLI processes the handlers top-down in a manner that provides deterministic and consistent ordering.</div>
<div><br></div><div> </div></div></div></div>