LINUX.ORG.RU

История изменений

Исправление 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")
  }