[saga-rg] [Fwd: Stream Stuff (fwd)]

Gregor von Laszewski gregor at mcs.anl.gov
Wed Dec 15 15:19:23 CST 2004


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 at ucl.ac.uk>
To: David E. Konerding <dekonerding at lbl.gov>,   Gregor von Laszewski 
<gregor at mcs.anl.gov>


---------- Forwarded message ----------
Date: Wed, 15 Dec 2004 14:37:02 -0600
From: John Shalf <jshalf at lbl.gov>
To: Shantenu Jha <s.jha at ucl.ac.uk>, Andre Merzky <andre at merzky.net>,
      Tom Goodale <goodale at 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();


	






More information about the saga-rg mailing list