On Fri, Feb 20, 2004 at 08:37:39AM -0500, sungo wrote: > > but really, you've changed the subject. i wasn't talking about aliases. > i was talking about event dispatch. we were talking about one specific > piece of api that can be fixed to be much more clear. i don't really > have interest in saving the world right now because i don't have time to > code that big of a patch. > > i think adding an event dispatch method set to the session, even if it > just called the kernel methods behind the scenes, would help clarify the > api. assuming we just add the two methods currently implemented for > event dispatch, things become pretty clear in several spots > > $_[SENDER]->post('thanks_for_the_fish' => $fish); > > $_[SESSION]->post('do_something'); > # much clearer to me than $_[KERNEL]->yield('do_something'); > > $_[SESSION]->call('pie'); > > The semantics become very explicit as to who we're operating on with a > minimum of noise.
Here's a summary of what we've discussed so far. Keep in mind that Scott's original goal was to make wheels faster, not to make call() syntactically sweeter. 1: Implement $session->call() in terms of $kernel->call(). Pros: It supports $other_session->invoke(). It's the most convenient form of call() ever. Cons: It's the slowest form of call() ever. It leads to programs that save $other_session references. It's not available on all sessions. To use it defensively requires: if ($other_session->can("call")) { $other_session->call(...); } else { $kernel->call($other_session, ...); } 2: Limit $session->call() to the current session with an explicit test and croak. Pass $session->call() directly to $self->_invoke_state(). Pros: It uses the sweetest call() syntax. It's faster than wrapping $kernel->call(). Cons: Its interface is misleading. It's not available on all sessions. See #1. It may not be much faster than cvs' $kernel->call(). 3: Implement invoke() as a Kernel method. Pros: $kernel->invoke() is the fastest option so far. Its interface doesn't imply more features than it implements. It's immediately available to every Session type. Cons: It's not as syntactically sweet as $session->call(). Coming up with a good name for it is HARD. -- Rocco Caputo - [EMAIL PROTECTED] - http://poe.perl.org/