diff options
Diffstat (limited to 'flow-main/src/main/scala/com/github/jodersky/flow/internal/Watcher.scala')
-rw-r--r-- | flow-main/src/main/scala/com/github/jodersky/flow/internal/Watcher.scala | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/flow-main/src/main/scala/com/github/jodersky/flow/internal/Watcher.scala b/flow-main/src/main/scala/com/github/jodersky/flow/internal/Watcher.scala index 3c30ccb..c8ca374 100644 --- a/flow-main/src/main/scala/com/github/jodersky/flow/internal/Watcher.scala +++ b/flow-main/src/main/scala/com/github/jodersky/flow/internal/Watcher.scala @@ -2,7 +2,7 @@ package com.github.jodersky.flow package internal import akka.actor.{ Actor, ActorRef, Props } -import java.nio.file.{ ClosedWatchServiceException, FileSystems, Path, Paths, WatchEvent, WatchKey } +import java.nio.file.{ ClosedWatchServiceException, Files, FileSystems, Path, Paths, WatchEvent, WatchKey } import java.nio.file.StandardWatchEventKinds._ import scala.collection.JavaConversions._ import scala.collection.mutable.{ HashMap, Map, MultiMap, Set } @@ -34,7 +34,7 @@ class Watcher(from: Option[ActorRef]) extends Actor { def receive = { - case w @ Serial.Watch(directory) => + case w @ Serial.Watch(directory, skipInitial) => val normalPath = Paths.get(directory).toAbsolutePath val normal = normalPath.toString @@ -42,7 +42,15 @@ class Watcher(from: Option[ActorRef]) extends Actor { keys.getOrElseUpdate(normal, watcher.watch(normalPath)) } match { case Failure(err) => reply(Serial.CommandFailed(w, err), sender) - case Success(key) => clients addBinding (normal, sender) + case Success(key) => + clients addBinding (normal, sender) + if (!skipInitial) { + Files.newDirectoryStream(normalPath) foreach { path => + if (!Files.isDirectory(path)) { + reply(Serial.Connected(path.toString), sender) + } + } + } } case u @ Serial.Unwatch(directory) => |