public synchronized void abort() { if (aborted) return; aborted = true; for (ScheduledFuture future : timeoutTasks.values()) future.cancel(false); timeoutTasks.clear(); Throwable fail = null; for (OutgoingFileMessage file : files.values()) { try { file.complete(); } catch (Throwable t) { if (fail == null) fail = t; else fail.addSuppressed(t); } } files.clear(); if (fail != null) Throwables.propagate(fail); }
public synchronized void abort() { if (aborted) return; aborted = true; for (ScheduledFuture future : timeoutTasks.values()) future.cancel(false); timeoutTasks.clear(); Throwable fail = null; for (OutgoingFileMessage file : files.values()) { try { file.complete(); } catch (Throwable t) { if (fail == null) fail = t; else fail.addSuppressed(t); } } files.clear(); if (fail != null) Throwables.propagate(fail); }
/** * Received ACK for file at {@code sequenceNumber}. * * @param sequenceNumber sequence number of file */ public void complete(int sequenceNumber) { boolean signalComplete; synchronized (this) { ScheduledFuture timeout = timeoutTasks.remove(sequenceNumber); if (timeout != null) timeout.cancel(false); OutgoingFileMessage file = files.remove(sequenceNumber); if (file != null) file.complete(); signalComplete = files.isEmpty(); } // all file sent, notify session this task is complete. if (signalComplete) session.taskCompleted(this); }
/** * Received ACK for file at {@code sequenceNumber}. * * @param sequenceNumber sequence number of file */ public void complete(int sequenceNumber) { boolean signalComplete; synchronized (this) { ScheduledFuture timeout = timeoutTasks.remove(sequenceNumber); if (timeout != null) timeout.cancel(false); OutgoingFileMessage file = files.remove(sequenceNumber); if (file != null) file.complete(); signalComplete = files.isEmpty(); } // all file sent, notify session this task is complete. if (signalComplete) session.taskCompleted(this); }
public synchronized void abort() { if (aborted) return; aborted = true; for (ScheduledFuture future : timeoutTasks.values()) future.cancel(false); timeoutTasks.clear(); Throwable fail = null; for (OutgoingFileMessage file : files.values()) { try { file.complete(); } catch (Throwable t) { if (fail == null) fail = t; else fail.addSuppressed(t); } } files.clear(); if (fail != null) Throwables.propagate(fail); }
/** * Received ACK for file at {@code sequenceNumber}. * * @param sequenceNumber sequence number of file */ public void complete(int sequenceNumber) { boolean signalComplete; synchronized (this) { ScheduledFuture timeout = timeoutTasks.remove(sequenceNumber); if (timeout != null) timeout.cancel(false); OutgoingFileMessage file = files.remove(sequenceNumber); if (file != null) file.complete(); signalComplete = files.isEmpty(); } // all file sent, notify session this task is complete. if (signalComplete) session.taskCompleted(this); }
/** * Received ACK for file at {@code sequenceNumber}. * * @param sequenceNumber sequence number of file */ public void complete(int sequenceNumber) { boolean signalComplete; synchronized (this) { ScheduledFuture timeout = timeoutTasks.remove(sequenceNumber); if (timeout != null) timeout.cancel(false); OutgoingFileMessage file = files.remove(sequenceNumber); if (file != null) file.complete(); signalComplete = files.isEmpty(); } // all file sent, notify session this task is complete. if (signalComplete) session.taskCompleted(this); }
public synchronized void abort() { if (aborted) return; aborted = true; for (ScheduledFuture future : timeoutTasks.values()) future.cancel(false); timeoutTasks.clear(); Throwable fail = null; for (OutgoingFileMessage file : files.values()) { try { file.complete(); } catch (Throwable t) { if (fail == null) fail = t; else fail.addSuppressed(t); } } files.clear(); if (fail != null) Throwables.propagate(fail); }