diff options
Diffstat (limited to 'doc/callback.n')
| -rw-r--r-- | doc/callback.n | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/doc/callback.n b/doc/callback.n deleted file mode 100644 index 3ab81ac..0000000 --- a/doc/callback.n +++ /dev/null @@ -1,88 +0,0 @@ -'\" -'\" Copyright (c) 2018 Donal K. Fellows -'\" -'\" See the file "license.terms" for information on usage and redistribution -'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. -'\" -.TH callback n 0.3 TclOO "TclOO Commands" -.so man.macros -.BS -'\" Note: do not modify the .SH NAME line immediately below! -.SH NAME -callback, mymethod \- generate callbacks to methods -.SH SYNOPSIS -.nf -package require tcl::oo - -\fBcallback\fR \fImethodName\fR ?\fIarg ...\fR? -\fBmymethod\fR \fImethodName\fR ?\fIarg ...\fR? -.fi -.BE -.SH DESCRIPTION -The \fBcallback\fR command, -'\" Based on notes in the tcllib docs, we know the provenance of mymethod -also called \fBmymethod\fR for compatibility with the ooutil and snit packages -of Tcllib, -and which should only be used from within the context of a call to a method -(i.e. inside a method, constructor or destructor body) is used to generate a -script fragment that will invoke the method, \fImethodName\fR, on the current -object (as reported by \fBself\fR) when executed. Any additional arguments -provided will be provided as leading arguments to the callback. The resulting -script fragment shall be a proper list. -.PP -Note that it is up to the caller to ensure that the current object is able to -handle the call of \fImethodName\fR; this command does not check that. -\fImethodName\fR may refer to any exported or unexported method, but may not -refer to a private method as those can only be invoked directly from within -methods. If there is no such method present at the point when the callback is -invoked, the standard \fBunknown\fR method handler will be called. -.SH EXAMPLE -This is a simple echo server class. The \fBcallback\fR command is used in two -places, to arrange for the incoming socket connections to be handled by the -\fIAccept\fR method, and to arrange for the incoming bytes on those -connections to be handled by the \fIReceive\fR method. -.PP -.CS -oo::class create EchoServer { - variable server clients - constructor {port} { - set server [socket -server [\fBcallback\fR Accept] $port] - set clients {} - } - destructor { - chan close $server - foreach client [dict keys $clients] { - chan close $client - } - } - - method Accept {channel clientAddress clientPort} { - dict set clients $channel [dict create \e - address $clientAddress port $clientPort] - chan event $channel readable [\fBcallback\fR Receive $channel] - } - method Receive {channel} { - if {[chan gets $channel line] >= 0} { - my echo $channel $line - } else { - chan close $channel - dict unset clients $channel - } - } - - method echo {channel line} { - dict with clients $channel { - chan puts $channel \e - [format {[%s:%d] %s} $address $port $line] - } - } -} -.CE -.SH "SEE ALSO" -chan(n), fileevent(n), my(n), self(n), socket(n), trace(n) -.SH KEYWORDS -callback, object -.\" Local Variables: -.\" mode: nroff -.\" fill-column: 78 -.\" End: |
