Package org.xnio.conduits

# Class SynchronizedMessageSourceConduit

java.lang.Object
org.xnio.conduits.AbstractConduit<MessageSourceConduit>
org.xnio.conduits.AbstractSynchronizedConduit<MessageSourceConduit>
org.xnio.conduits.AbstractSynchronizedSourceConduit<MessageSourceConduit>
org.xnio.conduits.SynchronizedMessageSourceConduit

All Implemented Interfaces:
  `Conduit`, `MessageSourceConduit`, `SourceConduit`

public final class SynchronizedMessageSourceConduit extends AbstractSynchronizedSourceConduit<MessageSourceConduit> implements MessageSourceConduit
A synchronized message source conduit. All conduit operations are wrapped in synchronization blocks for simplified thread safety.

Author:
  David M. Lloyd

## Field Summary

### Fields inherited from class org.xnio.conduits.AbstractSynchronizedConduit

`lock`

### Fields inherited from class org.xnio.conduits.AbstractConduit

`next`

## Constructor Summary

Constructors
Constructor
Description
`SynchronizedMessageSourceConduit(MessageSourceConduit next)`
Construct a new instance.
`SynchronizedMessageSourceConduit(MessageSourceConduit next, Object lock)`
Construct a new instance.

## Method Summary

Modifier and Type
Method
Description
`int`
`receive(ByteBuffer dst)`
Receive a message.
`long`
`receive(ByteBuffer[] dsts, int offs, int len)`
Receive a message.

### Methods inherited from class org.xnio.conduits.AbstractSynchronizedSourceConduit

`awaitReadable, awaitReadable, getReadThread, isReadResumed, isReadShutdown, resumeReads, setReadReadyHandler, suspendReads, terminateReads, wakeupReads`

### Methods inherited from class org.xnio.conduits.AbstractConduit

`getWorker`

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

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

### Methods inherited from interface org.xnio.conduits.Conduit

`getWorker`

### Methods inherited from interface org.xnio.conduits.SourceConduit

`awaitReadable, awaitReadable, getReadThread, isReadResumed, isReadShutdown, resumeReads, setReadReadyHandler, suspendReads, terminateReads, wakeupReads`

## Constructor Details

### SynchronizedMessageSourceConduit

public SynchronizedMessageSourceConduit(MessageSourceConduit next)
Construct a new instance. A new lock object is created.

Parameters:
  `next` - the next conduit in the chain

### SynchronizedMessageSourceConduit

public SynchronizedMessageSourceConduit(MessageSourceConduit next, Object lock)
Construct a new instance.

Parameters:
  `next` - the next conduit in the chain
  `lock` - the lock object to use

## Method Details

### receive

public int receive(ByteBuffer dst) throws IOException
Description copied from interface: `MessageSourceConduit`
Receive a message.

Specified by:
  `receive` in interface `MessageSourceConduit`
Returns:
  the size of the received message, 0 if no message is available, and -1 if the message channel has reached an end-of-file condition
Throws:
  `IOException` - if an I/O error occurs

### receive

public long receive(ByteBuffer[] dsts, int offs, int len) throws IOException
Description copied from interface: `MessageSourceConduit`
Receive a message.

Specified by:
  `receive` in interface `MessageSourceConduit`
Parameters:
  `offs` - the offset into the array of buffers of the first buffer to read into
  `len` - the number of buffers to fill
Returns:
  the size of the received message, 0 if no message is available, and -1 if the message channel has reached an end-of-file condition
Throws:
  `IOException` - if an I/O error occurs