A common interface to manage a session, such as FTP or HTTP.
A <session> instance keeps the status.
Session can be synchronous (blocking) or asynchronous (callback style) -- desirable if the interface allows both, so that application can select.
Can it be integrated to the human interaction?
- connection : port that can be used by selector to dispatch.
- open, close
- handle, for callback
The synchronous style can be implemented on top of asynchronous style using call/cc, but some applications may want to avoid calling call/cc.
Synchronous style pseudo code:
(define session (make <ftp-session> :initarg blah blah)) (session-open session) (ftp-user session user passwd) (ftp-get session :remote path :local path) (ftp-list session :remote path) (session-close session)
Apparently, it'll be nice if we could use plain name `open' and `close' for the generic function.