- java.lang.Object
-
- org.xnio.conduits.AbstractConduit<D>
-
- org.xnio.conduits.AbstractSynchronizedConduit<D>
-
- 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, java.lang.Object lock)
Construct a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
receive(java.nio.ByteBuffer dst)
Receive a message.long
receive(java.nio.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.SourceConduit
awaitReadable, awaitReadable, getReadThread, isReadResumed, isReadShutdown, resumeReads, setReadReadyHandler, suspendReads, terminateReads, wakeupReads
-
-
-
-
Constructor Detail
-
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, java.lang.Object lock)
Construct a new instance.- Parameters:
next
- the next conduit in the chainlock
- the lock object to use
-
-
Method Detail
-
receive
public int receive(java.nio.ByteBuffer dst) throws java.io.IOException
Description copied from interface:MessageSourceConduit
Receive a message.- Specified by:
receive
in interfaceMessageSourceConduit
- 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:
java.io.IOException
- if an I/O error occurs
-
receive
public long receive(java.nio.ByteBuffer[] dsts, int offs, int len) throws java.io.IOException
Description copied from interface:MessageSourceConduit
Receive a message.- Specified by:
receive
in interfaceMessageSourceConduit
offs
- the offset into the array of buffers of the first buffer to read intolen
- 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:
java.io.IOException
- if an I/O error occurs
-
-