
Hi Gregor, I did not post this to the newsgroup because it was the starting point for today's discussions. At this point, may of these points has been resolved and changed. (no point in posting things that are in flux). So, everyone on the list, you might want to wait for the version we post on the WiKI before commenting. -john On Dec 15, 2004, at 3:19 PM, Gregor von Laszewski wrote:
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();