I'm coming from Tcl-world ...
Andreas Leitgeb
Andreas.Leitgeb at siemens.at
Mon Aug 5 10:12:31 EDT 2002
More information about the Python-list mailing list
Mon Aug 5 10:12:31 EDT 2002
- Previous message (by thread): I'm coming from Tcl-world ...
- Next message (by thread): I'm coming from Tcl-world ...
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Oren Tirosh <oren-py-l at hishome.net> wrote: > The asyncore documentation could be better. I had a look at help("asyncore"), and it gave me headache :-( > If you have any ideas how to make it easier to use I'd love to hear them, > whether they're tcl-inspired or not... yes, and I think it would be quite easy (up to details) to do it in Python: (the following is python-like, but pseudo-code) The implementations are missing, and could be based on asyncore. module fileevents: # register a channel for watching reads, writes or errors # fd (a file-object or a numeric os-filedescriptor) # cb (callback: a function object taking a few parameters # defined later. Specifying Null here, will cancel # a previously set up callback for that channel # mode (what events to register for: readable,writable,error # or more of them. If error is not registered for an fd # at the time the internal select() returns one for the fd, # then read- and/or write-callback will be called instead # once and then the channel is automtically unregistered.) # data (an arbitrary object, that will be passed to the # callback as is) def register(fd,cb,mode="read",data=None) reg=register # alias :-) # if a timer is set, the internally called select is called with # an appropriate timeout, to awake at the first requested timer # after the callback returns, select is automatically called again, # with the time left until the next waiting timer. def timer(seconds,cb,data=None,autoreset=0) # unregister a channel: unreg = lambda fd,mode,data=None: register(fd,None,mode,data) # the main loop: # calls select(), and when that finishes, calls all the # registered callback-functions whose condition is met # and/or all timer-callbacks. Exceptions thrown by callbacks # are caught, and handled: (e.g. printed out, or some # registered exception-handler called) # If there is no timer and no registered fileevent left, # or on some other condition (yet to be defined - perhaps a # special exception, as in asyncore), loop() finishes. def loop() So much for the basic interface. possible enhancements: allow identifying & cancelling of timers Some of the suggested features even go beyond Tcl's current fileevents :-) PS: this was a brainstorming, not yet a thought-out design. -- Newsflash: Sproingy made it to the ground ! read more ... <http://avl.enemy.org/sproingy/>
- Previous message (by thread): I'm coming from Tcl-world ...
- Next message (by thread): I'm coming from Tcl-world ...
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list