/******************************************************************************************************************* * * * ******************************************************************************************************************/ @Nonnull public static CollaborationCompletedMessage forCollaboration (final @Nonnull Collaboration collaboration) { return new CollaborationCompletedMessage(collaboration); }
/******************************************************************************************************************* * * Returns the time this unit of work took to complete. * ******************************************************************************************************************/ @Nonnull public Duration getDuration() { return new Duration(getStartTime().getMillis(), endTime); } }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ private void eventuallySendCompletionMessage (final @Nonnull Object message) { if (!completed && (deliveringMessages.size() + pendingMessages.size() + runningThreads.size() + suspensionTokens.size() == 0)) { log.debug(">>>> sending completion message for {}", this); completed = true; THREAD_LOCAL.remove(); CollaborationCompletedMessage.forCollaboration(this).send(); } }