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/

Reply via email to