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

java.lang.Object
  extended byEDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
      extended byEDU.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  ObjectInputStream in_
           
protected  PipedInputStream inp_
           
protected  ObjectOutputStream out_
           
protected  PipedOutputStream outp_
           
 
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
capacity_, putGuard_, takeGuard_
 
Constructor Summary
PipedChannel()
           
 
Method Summary
protected  Object extract()
          Shared mechanics for take-based methods
protected  ObjectInputStream in()
          Return input stream, first constructing if necessary.
protected  void insert(Object x)
          Shared mechanics for put-based methods
protected  ObjectOutputStream out()
          Return output stream, first constructing if necessary.
 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 ObjectInputStream in_

out_

protected ObjectOutputStream out_

outp_

protected final PipedOutputStream outp_

inp_

protected final PipedInputStream inp_
Constructor Detail

PipedChannel

public PipedChannel()
Method Detail

in

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


out

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


insert

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

Specified by:
insert in class SemaphoreControlledChannel

extract

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

Specified by:
extract in class SemaphoreControlledChannel

peek

public Object peek()
Stubbed out for now