You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by es...@apache.org on 2011/08/19 20:10:32 UTC

svn commit: r1159723 - /incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/formatter/output/PathManager.java

Author: esammer
Date: Fri Aug 19 18:10:31 2011
New Revision: 1159723

URL: http://svn.apache.org/viewvc?rev=1159723&view=rev
Log:
- Added PathManager to control the naming of file sequences. Probably temporary - not much thought here but need something to prototype.

Added:
    incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/formatter/output/PathManager.java

Added: incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/formatter/output/PathManager.java
URL: http://svn.apache.org/viewvc/incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/formatter/output/PathManager.java?rev=1159723&view=auto
==============================================================================
--- incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/formatter/output/PathManager.java (added)
+++ incubator/flume/branches/flume-728/flume-ng-core/src/main/java/org/apache/flume/formatter/output/PathManager.java Fri Aug 19 18:10:31 2011
@@ -0,0 +1,54 @@
+package org.apache.flume.formatter.output;
+
+import java.io.File;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class PathManager {
+
+  private long seriesTimestamp;
+  private File baseDirectory;
+  private AtomicInteger fileIndex;
+
+  private File currentFile;
+
+  public PathManager() {
+    seriesTimestamp = System.currentTimeMillis();
+    fileIndex = new AtomicInteger();
+  }
+
+  public File nextFile() {
+    currentFile = new File(baseDirectory, seriesTimestamp + "-"
+        + fileIndex.incrementAndGet());
+
+    return currentFile;
+  }
+
+  public File getCurrentFile() {
+    if (currentFile == null) {
+      return nextFile();
+    }
+
+    return currentFile;
+  }
+
+  public void rotate() {
+    currentFile = null;
+  }
+
+  public File getBaseDirectory() {
+    return baseDirectory;
+  }
+
+  public void setBaseDirectory(File baseDirectory) {
+    this.baseDirectory = baseDirectory;
+  }
+
+  public long getSeriesTimestamp() {
+    return seriesTimestamp;
+  }
+
+  public AtomicInteger getFileIndex() {
+    return fileIndex;
+  }
+
+}