EDU.oswego.cs.dl.util.concurrent.misc
Class PipedChannel

java.lang.Object
  extended by EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
      extended by EDU.oswego.cs.dl.util.concurrent.misc.PipedChannel
All Implemented Interfaces:
BoundedChannel, Channel, Puttable, Takable

public class PipedChannel
extends SemaphoreControlledChannel

A channel based on a java.io.PipedInputStream and java.io.PipedOutputStream. Elements are serialized using ObjectInputStreams and ObjectOutputStreams upon insertion and extraction from the pipe.

IO Exceptions are transformed into Errors. This is in general not a good idea, but seems to be the most reasonable compromise for the intended usage contexts.

Status Uncertain. There are enough conceptual and implementation snags surrounding use of pipes as Channels to downplay use. However, without such bridges, people would have to duplicate code that should work the same way in both cases.

[ Introduction to this package. ]


Field Summary
protected  java.io.ObjectInputStream in_
           
protected  java.io.PipedInputStream inp_
           
protected  java.io.ObjectOutputStream out_
           
protected  java.io.PipedOutputStream outp_
           
 
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
capacity_, putGuard_, takeGuard_
 
Constructor Summary
PipedChannel()
           
 
Method Summary
protected  java.lang.Object extract()
          Shared mechanics for take-based methods
protected  java.io.ObjectInputStream in()
          Return input stream, first constructing if necessary.
protected  void insert(java.lang.Object x)
          Shared mechanics for put-based methods
protected  java.io.ObjectOutputStream out()
          Return output stream, first constructing if necessary.
 java.lang.Object peek()
          Stubbed out for now
 
Methods inherited from class EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
capacity, offer, poll, put, size, take
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

in_

protected java.io.ObjectInputStream in_

out_

protected java.io.ObjectOutputStream out_

outp_

protected final java.io.PipedOutputStream outp_

inp_

protected final java.io.PipedInputStream inp_
Constructor Detail

PipedChannel

public PipedChannel()
Method Detail

in

protected java.io.ObjectInputStream in()
Return input stream, first constructing if necessary. Needed because Object streams can block on open.


out

protected java.io.ObjectOutputStream out()
Return output stream, first constructing if necessary. Needed because Object streams can block on open.


insert

protected void insert(java.lang.Object x)
Shared mechanics for put-based methods

Specified by:
insert in class SemaphoreControlledChannel

extract

protected java.lang.Object extract()
Shared mechanics for take-based methods

Specified by:
extract in class SemaphoreControlledChannel

peek

public java.lang.Object peek()
Stubbed out for now