Package org.apache.avro.ipc

# Class Transceiver

java.lang.Object
org.apache.avro.ipc.Transceiver

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

Direct Known Subclasses:
  `DatagramTransceiver`, `HttpTransceiver`, `LocalTransceiver`, `SaslSocketTransceiver`, `SocketTransceiver`

public abstract class Transceiver extends Object implements Closeable
Base transport class used by `Requestor`.

## Constructor Summary

Constructors
Constructor
Description
`Transceiver()`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
`org.apache.avro.Protocol`
`getRemote()`
Returns the protocol passed to `setRemote(Protocol)`.
`abstract String`
`getRemoteName()`
`boolean`
`isConnected()`
True if a handshake has been completed for this connection.
`void`
`lockChannel()`
Acquires an exclusive lock on the transceiver's channel.
`abstract List<ByteBuffer>`
`readBuffers()`
Called by the default definition of `transceive(List)`.
`void`
`setRemote(org.apache.avro.Protocol protocol)`
Called with the remote protocol when a handshake has been completed.
`List<ByteBuffer>`
`transceive(List<ByteBuffer> request)`
Called by `Requestor.request(String,Object)` for two-way messages.
`void`
`transceive(List<ByteBuffer> request, Callback<List<ByteBuffer>> callback)`
Called by `Requestor.request(String,Object,Callback)` for two-way messages using callbacks.
`void`
`unlockChannel()`
Releases the lock on the transceiver's channel if held by the calling thread.
`abstract void`
`writeBuffers(List<ByteBuffer> buffers)`
Called by `Requestor.request(String,Object)` for one-way messages.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Transceiver

public Transceiver()

## Method Details

### getRemoteName

public abstract String getRemoteName() throws IOException

Throws:
  `IOException`

### lockChannel

public void lockChannel()
Acquires an exclusive lock on the transceiver's channel.

### unlockChannel

public void unlockChannel()
Releases the lock on the transceiver's channel if held by the calling thread.

### transceive

public List<ByteBuffer> transceive(List<ByteBuffer> request) throws IOException
Called by `Requestor.request(String,Object)` for two-way messages. By default calls `writeBuffers(List)` followed by `readBuffers()`.

Throws:
  `IOException`

### transceive

public void transceive(List<ByteBuffer> request, Callback<List<ByteBuffer>> callback) throws IOException
Called by `Requestor.request(String,Object,Callback)` for two-way messages using callbacks.

Throws:
  `IOException`

### readBuffers

public abstract List<ByteBuffer> readBuffers() throws IOException
Called by the default definition of `transceive(List)`.

Throws:
  `IOException`

### writeBuffers

public abstract void writeBuffers(List<ByteBuffer> buffers) throws IOException
Called by `Requestor.request(String,Object)` for one-way messages.

Throws:
  `IOException`

### isConnected

public boolean isConnected()
True if a handshake has been completed for this connection. Used to determine whether a handshake need be completed prior to a one-way message. Requests and responses are always prefixed by handshakes, but one-way messages. If the first request sent over a connection is one-way, then a handshake-only response is returned. Subsequent one-way messages over the connection will have no response data sent. Returns false by default.

### setRemote

public void setRemote(org.apache.avro.Protocol protocol)
Called with the remote protocol when a handshake has been completed. After this has been called and while a connection is maintained, `isConnected()` should return true and #getRemote() should return this protocol. Does nothing by default.

### getRemote

public org.apache.avro.Protocol getRemote()
Returns the protocol passed to `setRemote(Protocol)`. Throws IllegalStateException by default.

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Throws:
  `IOException`