
so it does not get lost i post this here ;-) -------- Original Message -------- Subject: Stream Stuff (fwd) Date: Wed, 15 Dec 2004 20:42:39 +0000 (GMT) From: Shantenu Jha <s.jha@ucl.ac.uk> To: David E. Konerding <dekonerding@lbl.gov>, Gregor von Laszewski <gregor@mcs.anl.gov> ---------- Forwarded message ---------- Date: Wed, 15 Dec 2004 14:37:02 -0600 From: John Shalf <jshalf@lbl.gov> To: Shantenu Jha <s.jha@ucl.ac.uk>, Andre Merzky <andre@merzky.net>, Tom Goodale <goodale@cct.lsu.edu> Subject: Stream Stuff Constructing Stream (client) NewStream(host,port) NewAuthenticatedStream(host,port,security_context) NewEncryptedStream(host,port,security_context) NewFirewallBurrowingStream(target,proxy_context,security_context) CloseStream(); Stacked Constructor Style (alternative contructor pattern... consistent with XIO pattern) NewStream(host,port) NewSSLAuthenticatedStream(stream,host,port) // pass a raw stream to the authenticated stream object // the raw stream gets embedded in the Authenticated Stream stream = NewStream(host,port) pstream = NewFirewallProxyStream(stream,proxy_context) sstream = NewSSLAuthenticatedStream(pstream,security_context); Operations on Stream object int s.connect() // may be necessary for inheritance and compatibility with the java way of doing things (also for retries) int s.read(buffer,size) jnt s.write(buffer,size) int s.status() int s.wait(timeout) int s.poll(); Constructing Stream Server NewStreamServer(port); NewAuthenticatedStreamServer(port,security_context); NewEncryptedStreamServer(port,security_context); NewProxyStreamServer(proxy_context,security_context); CloseStreamServer(); // essentially a factory for streams Operations on StreamServer Stream s.pollForConnection(); Stream s.waitForConnection(timeout); Stream s.acceptSecureConnection(stream_auth_info) ?? // or do we getSecurityInfo() on the client stream to get info that can be used for authorization Operations on StreamSecurityInfo string = s.getUserName(); // if GSI, this returns a null string = s.getDN(); // if ssl, this returns a null string = s.getHost(); string = s.getSourcePort(); Multiplexing Constructor NewMultiplexor() CloseMultiplexor() Operations on Multiplexor watchStream(stream,flag) // {read|write|exception} flag [stream] wait(timeout) [stream] poll(); // returns array of streams Stream waitNext(timeout); Stream pollNext();