[comp.os.mach] multiple port transfer

dennisg@kgw2.UUCP (Dennis Glatting) (12/02/89)

could someone please help me.  I'm doing this 
communications system on the NeXT.  an client thread
if a manager task is fired up to process each message
received.

to communicate with my comm. box i have a layered task
structure.  there is a "stream administrator" task which
handles low level communications with the comm. box and there
is a "satlink administrator" which is a layer above the stream
administrator.  communications occur like this:
client->satlink->stream->comm. box.

now the client can puke for any number of reasons.  therefore
the satlink and stream tasks need to perform resource clean-up
when this occurs.  since the client talks with the satlink,
the satlink will know when the client pukes by virtue of its loss 
of send rights which is received on its notify port.  now i
want to use the same method on the stream (i.e. when the client
pukes the stream can perform resource clean-up).  I want this to 
be invisible, i.e. the satlink doesn't have to code a special
message to its stream.  i want the stream to get the very same notify.

so, my question is how do i pass two ports from the satlink
to the stream (the satlink response port and the client
response port)?

i should mention that there are three copies of the satlink
task in the system and four stream tasks.  there is a task
pair per device and the ability exists that *other* entities
can interceed by virtue of this independence.

i don't believe the answer is to check the second port into
the name server then check it back out.  i don't want to polute
its space.  the port in the client is invisible to the client.
it is declared and used in the satlink interface library routines.


==+==+==+==+==+==+==+==+==+==+==+==+==+==
 ..umbc3.umbc.edu!tron!kgw2!dennisg  
      + Dennis P. Glatting
      + Xetron Corporation
      + Cincinnati, Ohio
      +  I want my own NeXT, 16 MB RAM,
      +    660 MB SCSI, NeXT Printer.
      +    Accepting Donations.
==+==+==+==+==+==+==+==+==+==+==+==+==+==