public ISegmentStore<ISegment> getSegmentStore() {
return fSegmentStore;
}
+
+ @Override
+ public void handleSuccess() {
+ super.handleSuccess();
+ closeSegmentStore(false);
+ }
+
+ @Override
+ public void handleFailure() {
+ super.handleFailure();
+ closeSegmentStore(true);
+ }
+
+ @Override
+ public void handleCancel() {
+ super.handleCancel();
+ closeSegmentStore(true);
+ }
+
+ private void closeSegmentStore(boolean deleteFiles) {
+ fSegmentStore.close(deleteFiles);
+ }
+
}
+
}
* segments are found by parsing the events of a trace, the event request
* would be done in this method.
*
+ * Note: After this method, the segment store should be completed, so it
+ * should also close the segment store at the end of the analysis
+ *
* @param segmentStore
* The segment store to fill
* @param monitor
* with it.
*/
void dispose();
+
+ /**
+ * Method to close off the segment store. This happens for example when we
+ * are done reading an off-line trace. Implementers can use this method to
+ * save the segment store on disk
+ *
+ * @param deleteFiles
+ * Whether to delete any file that was created while building the
+ * segment store
+ */
+ default void close(boolean deleteFiles) {
+
+ }
}
if (trace == null) {
/* This analysis was cancelled in the meantime */
segmentStoreReady(false);
+ segments.close(true);
return false;
}
- waitForSegmentStoreCompletion();
- segments.addAll(getSegments());
- return true;
+ if (waitForSegmentStoreCompletion()) {
+ segments.addAll(getSegments());
+ segments.close(false);
+ return true;
+ }
+ segments.close(true);
+ return false;
}
@Override