Package org.apache.maven.cli.transfer
Class SimplexTransferListener
- java.lang.Object
-
- org.eclipse.aether.transfer.AbstractTransferListener
-
- org.apache.maven.cli.transfer.SimplexTransferListener
-
- All Implemented Interfaces:
org.eclipse.aether.transfer.TransferListener
public final class SimplexTransferListener extends org.eclipse.aether.transfer.AbstractTransferListenerATransferListenerimplementation that wraps another delegateTransferListenerbut makes it run on single thread, keeping the listener logic simple. This listener also blocks on last transfer event to allow output to perform possible cleanup. It spawns a daemon thread to consume queued events that may fall in even concurrently.- Since:
- 3.9.7
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classSimplexTransferListener.BlockingExchangeprivate static classSimplexTransferListener.Exchange
-
Field Summary
Fields Modifier and Type Field Description private static intBATCH_MAX_SIZEprivate intbatchMaxSizeprivate booleanblockOnLastEventprivate org.eclipse.aether.transfer.TransferListenerdelegateprivate java.util.concurrent.ArrayBlockingQueue<SimplexTransferListener.Exchange>eventQueueprivate static org.slf4j.LoggerLOGGERprivate java.util.concurrent.ConcurrentHashMap<TransferResourceIdentifier,java.lang.Boolean>ongoingprivate static intQUEUE_SIZE
-
Constructor Summary
Constructors Constructor Description SimplexTransferListener(org.eclipse.aether.transfer.TransferListener delegate)Constructor that makes passed in delegate run on single thread, and will block on last event.SimplexTransferListener(org.eclipse.aether.transfer.TransferListener delegate, int queueSize, int batchMaxSize, boolean blockOnLastEvent)Constructor that may alter behaviour of this listener.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voiddemux(java.util.List<SimplexTransferListener.Exchange> exchanges)private voidfeedConsumer()org.eclipse.aether.transfer.TransferListenergetDelegate()private voidput(org.eclipse.aether.transfer.TransferEvent event, boolean last)voidtransferCorrupted(org.eclipse.aether.transfer.TransferEvent event)voidtransferFailed(org.eclipse.aether.transfer.TransferEvent event)voidtransferInitiated(org.eclipse.aether.transfer.TransferEvent event)voidtransferProgressed(org.eclipse.aether.transfer.TransferEvent event)voidtransferStarted(org.eclipse.aether.transfer.TransferEvent event)voidtransferSucceeded(org.eclipse.aether.transfer.TransferEvent event)
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
QUEUE_SIZE
private static final int QUEUE_SIZE
- See Also:
- Constant Field Values
-
BATCH_MAX_SIZE
private static final int BATCH_MAX_SIZE
- See Also:
- Constant Field Values
-
delegate
private final org.eclipse.aether.transfer.TransferListener delegate
-
batchMaxSize
private final int batchMaxSize
-
blockOnLastEvent
private final boolean blockOnLastEvent
-
eventQueue
private final java.util.concurrent.ArrayBlockingQueue<SimplexTransferListener.Exchange> eventQueue
-
ongoing
private final java.util.concurrent.ConcurrentHashMap<TransferResourceIdentifier,java.lang.Boolean> ongoing
-
-
Constructor Detail
-
SimplexTransferListener
public SimplexTransferListener(org.eclipse.aether.transfer.TransferListener delegate)
Constructor that makes passed in delegate run on single thread, and will block on last event.
-
SimplexTransferListener
public SimplexTransferListener(org.eclipse.aether.transfer.TransferListener delegate, int queueSize, int batchMaxSize, boolean blockOnLastEvent)Constructor that may alter behaviour of this listener.- Parameters:
delegate- The delegate that should run on single thread.queueSize- The event queue size (default1024).batchMaxSize- The maximum batch size delegate should receive (default500).blockOnLastEvent- Should this listener block on last transfer end (completed or corrupted) block? (defaulttrue).
-
-
Method Detail
-
getDelegate
public org.eclipse.aether.transfer.TransferListener getDelegate()
-
feedConsumer
private void feedConsumer()
-
demux
private void demux(java.util.List<SimplexTransferListener.Exchange> exchanges)
-
put
private void put(org.eclipse.aether.transfer.TransferEvent event, boolean last)
-
transferInitiated
public void transferInitiated(org.eclipse.aether.transfer.TransferEvent event)
- Specified by:
transferInitiatedin interfaceorg.eclipse.aether.transfer.TransferListener- Overrides:
transferInitiatedin classorg.eclipse.aether.transfer.AbstractTransferListener
-
transferStarted
public void transferStarted(org.eclipse.aether.transfer.TransferEvent event) throws org.eclipse.aether.transfer.TransferCancelledException- Specified by:
transferStartedin interfaceorg.eclipse.aether.transfer.TransferListener- Overrides:
transferStartedin classorg.eclipse.aether.transfer.AbstractTransferListener- Throws:
org.eclipse.aether.transfer.TransferCancelledException
-
transferProgressed
public void transferProgressed(org.eclipse.aether.transfer.TransferEvent event) throws org.eclipse.aether.transfer.TransferCancelledException- Specified by:
transferProgressedin interfaceorg.eclipse.aether.transfer.TransferListener- Overrides:
transferProgressedin classorg.eclipse.aether.transfer.AbstractTransferListener- Throws:
org.eclipse.aether.transfer.TransferCancelledException
-
transferCorrupted
public void transferCorrupted(org.eclipse.aether.transfer.TransferEvent event) throws org.eclipse.aether.transfer.TransferCancelledException- Specified by:
transferCorruptedin interfaceorg.eclipse.aether.transfer.TransferListener- Overrides:
transferCorruptedin classorg.eclipse.aether.transfer.AbstractTransferListener- Throws:
org.eclipse.aether.transfer.TransferCancelledException
-
transferSucceeded
public void transferSucceeded(org.eclipse.aether.transfer.TransferEvent event)
- Specified by:
transferSucceededin interfaceorg.eclipse.aether.transfer.TransferListener- Overrides:
transferSucceededin classorg.eclipse.aether.transfer.AbstractTransferListener
-
transferFailed
public void transferFailed(org.eclipse.aether.transfer.TransferEvent event)
- Specified by:
transferFailedin interfaceorg.eclipse.aether.transfer.TransferListener- Overrides:
transferFailedin classorg.eclipse.aether.transfer.AbstractTransferListener
-
-