Package hudson.remoting
Class AbstractSynchronousByteArrayCommandTransport
- java.lang.Object
-
- hudson.remoting.CommandTransport
-
- hudson.remoting.SynchronousCommandTransport
-
- hudson.remoting.AbstractSynchronousByteArrayCommandTransport
-
public abstract class AbstractSynchronousByteArrayCommandTransport extends SynchronousCommandTransport
SynchronousCommandTransport
that works withbyte[]
instead of command object. This base class hides away some of theCommand
serialization details. One less thing for transport implementers to worry about.- Since:
- 2.13
- Author:
- Kohsuke Kawaguchi
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class hudson.remoting.CommandTransport
CommandTransport.CommandReceiver
-
-
Field Summary
-
Fields inherited from class hudson.remoting.SynchronousCommandTransport
channel
-
-
Constructor Summary
Constructors Constructor Description AbstractSynchronousByteArrayCommandTransport()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Command
read()
Called byChannel
to read the next command to arrive from the stream.abstract byte[]
readBlock(Channel channel)
Read a byte[] from the underlying transport for the given channel.void
write(Command cmd, boolean last)
Called byChannel
to send one command to the other side.abstract void
writeBlock(Channel channel, byte[] payload)
Writes a byte[] to the transport.-
Methods inherited from class hudson.remoting.SynchronousCommandTransport
setup
-
Methods inherited from class hudson.remoting.CommandTransport
closeRead, closeWrite, getRemoteCapability
-
-
-
-
Method Detail
-
readBlock
public abstract byte[] readBlock(Channel channel) throws IOException, ClassNotFoundException
Read a byte[] from the underlying transport for the given channel.- Throws:
IOException
ClassNotFoundException
-
writeBlock
public abstract void writeBlock(Channel channel, byte[] payload) throws IOException
Writes a byte[] to the transport. The block boundary is significant. A transport needs to ensure that that the same byte[] is read by the peer throughreadBlock(Channel)
(unlike TCP, where a single write can be split into multiple read()s on the other side.)- Throws:
IOException
-
read
public Command read() throws IOException, ClassNotFoundException
Description copied from class:SynchronousCommandTransport
Called byChannel
to read the next command to arrive from the stream.- Specified by:
read
in classSynchronousCommandTransport
- Throws:
IOException
ClassNotFoundException
-
write
public void write(Command cmd, boolean last) throws IOException
Description copied from class:CommandTransport
Called byChannel
to send one command to the other side.Channel
serializes the invocation of this method for ordering. That is, at any given point in time only one thread executes this method.Asynchronous transport must serialize the given command object before returning from this method, as its content can be modified by the calling thread as soon as this method returns. Also, if an asynchronous transport chooses to return from this method without committing data to the network, then it is also responsible for a flow control (by blocking this method if too many commands are queueing up waiting for the network to unclog.)
- Specified by:
write
in classCommandTransport
- Parameters:
cmd
- The command object that needs to be sent. Never null. This must be serialized viaCommand.writeTo(Channel, ObjectOutputStream)
last
- Informational flag that indicates that this is the last call of theCommandTransport.write(Command, boolean)
.- Throws:
IOException
-
-