История изменений
Исправление RedPossum, (текущая версия) :
проверка событий:
def innerWork:Unit = {
val mbKey = Try(watcher.take())
mbKey match {
case Success(key) =>
for(watchEvent <- key.pollEvents.asScala){
sendToSubscribers(watchEvent)
}
key.reset
case Failure(e) =>
log.debug("all fails with {}",e)
context.stop(self)
}
}
отправка подписчикам
def sendToSubscribers(event:WatchEvent[_]):Unit = {
val action = event.kind() match {
case ENTRY_CREATE => Some(EntryCreate(event.asInstanceOf[WatchEvent[Path]].context()))
case ENTRY_DELETE => Some(EntryDelete(event.asInstanceOf[WatchEvent[Path]].context()))
case ENTRY_MODIFY => Some(EntryModify(event.asInstanceOf[WatchEvent[Path]].context()))
case OVERFLOW => None
}
for(a <- action; subscriber<-subcribers){
subscriber ! a
}
}
получение подписчиком
def receive:Receive = {
case EntryCreate(p) => println(s"entity created:$p")
case EntryDelete(p) => println(s"entity deleted:$p")
case EntryModify(p) => println(s"entity updated:$p")
case _ => println("wtf")
}
Исправление RedPossum, :
проверка событий:
def innerWork:Unit = {
val mbKey = Try(watcher.take())
mbKey match {
case Success(key) =>
for(watchEvent <- key.pollEvents.asScala){
sendToSubscribers(watchEvent)
}
key.reset
case Failure(e) =>
log.debug("all fails with {}",e)
context.stop(self)
}
}
отправка подписчикам
def sendToSubscribers(event:WatchEvent[_]):Unit = {
val action = event.kind() match {
case ENTRY_CREATE => Some(EntryCreate(event.asInstanceOf[WatchEvent[Path]].context()))
case ENTRY_DELETE => Some(EntryDelete(event.asInstanceOf[WatchEvent[Path]].context()))
case ENTRY_MODIFY => Some(EntryModify(event.asInstanceOf[WatchEvent[Path]].context()))
case OVERFLOW => None
}
for(a <- action; subscriber<-subcribers){
subscriber ! a
}
}
получение подписчиком
def receive:Receive = {
case EntryCreate(p) => println(s"entyty created:$p")
case EntryDelete(p) => println(s"entyty deleted:$p")
case EntryModify(p) => println(s"entyty updated:$p")
case _ => println("wtf")
}
Исходная версия RedPossum, :
проверка событий:
def innerWork:Unit = {
val mbKey = Try(watcher.take())
mbKey match {
case Success(key) =>
for(watchEvent <- key.pollEvents.asScala){
sendToSubscribers(watchEvent)
}
key.reset
case Failure(e) =>
log.debug("all fails with {}",e)
context.stop(self)
}
}
отправка подписчикам
def sendToSubscribers(event:WatchEvent[_]):Unit = {
val action = event.kind() match {
case ENTRY_CREATE => Some(EntryCreate(event.asInstanceOf[WatchEvent[Path]].context()))
case ENTRY_DELETE => Some(EntryDelete(event.asInstanceOf[WatchEvent[Path]].context()))
case ENTRY_MODIFY => Some(EntryModify(event.asInstanceOf[WatchEvent[Path]].context()))
case OVERFLOW => None
}
for(a <- action; subscriber<-subcribers){
subscriber ! a
}
}
получение
def receive:Receive = {
case EntryCreate(p) => println(s"entyty created:$p")
case EntryDelete(p) => println(s"entyty deleted:$p")
case EntryModify(p) => println(s"entyty updated:$p")
case _ => println("wtf")
}