hudson.remoting
Class Pipe

java.lang.Object
  extended by hudson.remoting.Pipe
All Implemented Interfaces:
java.io.Serializable

public final class Pipe
extends java.lang.Object
implements java.io.Serializable

Pipe for the remote Callable and the local program to talk to each other.

There are two kinds of pipes. One is for having a local system write to a remote system, and the other is for having a remote system write to a local system. Use the different versions of the create method to create the appropriate kind of pipes.

Once created, Pipe can be sent to the remote system as a part of a serialization of Callable between Channels. Once re-instantiated on the remote Channel, pipe automatically connects back to the local instance and perform necessary set up.

The local and remote system can then call getIn() and getOut() to read/write bytes.

Pipe can be only written by one system and read by the other system. It is an error to send one Pipe to two remote Channels, or send one Pipe to the same Channel twice.

Usage

 final Pipe p = Pipe.createLocalToRemote();

 channel.callAsync(new Callable() {
   public Object call() {
     InputStream in = p.getIn();
     ... read from in ...
   }
 });

 OutputStream out = p.getOut();
 ... write to out ...
 
Similarly, for remote to local pipe,
 final Pipe p = Pipe.createRemoteToLocal();

 channel.callAsync(new Callable() {
   public Object call() {
     OutputStream out = p.getOut();
     ... write to out ...
   }
 });

 InputStream in = p.getIn();
 ... read from in ...
 

Implementation Note

For better performance, Pipe uses lower-level Command abstraction to send data, instead of typed proxy object. This allows the writer to send data without blocking until the arrival of the data is confirmed.

Author:
Kohsuke Kawaguchi
See Also:
Serialized Form

Method Summary
static Pipe createLocalToRemote()
          Creates a Pipe that allows local system to write and remote system to read.
static Pipe createRemoteToLocal()
          Creates a Pipe that allows remote system to write and local system to read.
 java.io.InputStream getIn()
          Gets the reading end of the pipe.
 java.io.OutputStream getOut()
          Gets the writing end of the pipe.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getIn

public java.io.InputStream getIn()
Gets the reading end of the pipe.


getOut

public java.io.OutputStream getOut()
Gets the writing end of the pipe.


createRemoteToLocal

public static Pipe createRemoteToLocal()
Creates a Pipe that allows remote system to write and local system to read.


createLocalToRemote

public static Pipe createLocalToRemote()
Creates a Pipe that allows local system to write and remote system to read.



Copyright © 2013. All Rights Reserved.