On Tue, Apr 18, 2000 at 06:18:04PM -0400, [EMAIL PROTECTED] wrote:
> >>>>> "JNP" == Joshua N Pritikin <[EMAIL PROTECTED]> writes:
>   JNP>   $watcher->{data} = ...;
> 
> <SMACK!>

;-)  X-)  :-(  :-}

> being the one who asked for and got this attribute added, i vehemently
> oppose that bit of code. you are breaking all rules of OO
> coding. $watcher (or the $event passed into a callback) is an object
> with no implementation implied. the code should be a method call:
> 
>       $watcher->data( 'foo' ) ;

Hm.

> i assume (i haven't checked the docs in this) that it is a single
> accessor method which sets the value if given an argument and gets it
> back always.

I didn't document it yet.

> the purpose of the data attribute is to associate some private data with
> a watcher/event and the callback was not an object/method. so when the
> event is triggered, you can look into the data value and see which
> thing (e.g. socket) caused the trigger and get at buffers and other data
> related to that socket. this eliminates any tricky lookups based on the
> socket.

Granted.  Perhaps the thing to do is to document that data() should
be reimplemented in every subclass to use a uniqueish key:

  sub data {
    my ($o, $data) = @_;
    $o->{ __PACKAGE__ } = $data if @_ > 1;
    $o->{ __PACKAGE__ }
  }

Maybe data can be imported or auto-created somehow...

-- 
"May the best description of competition prevail."
          via, but not speaking for Deutsche Bank

Reply via email to