как отменить ConsoleReader.readLine ()

во-первых, я изучаю scala и новичок в мире Java. Я хочу создать консоль и запустить эту консоль как службу, которую вы можете запускать и останавливать. Мне удалось запустить ConsoleReader в Actor, но я не знаю, как правильно остановить ConsoleReader. Вот код:

import eu.badmood.util.trace
import scala.actors.Actor._

import tools.jline.console.ConsoleReader

object Main {

  def main(args:Array[String]){
    //start the console
    Console.start(message => {
      //handle console inputs
      message match {
        case "exit" => Console.stop()
        case _ => trace(message)
      }
    })

    //try to stop the console after a time delay
    Thread.sleep(2000)
    Console.stop()

  }

}

object Console {

  private val consoleReader = new ConsoleReader()

  private var running = false

  def start(handler:(String)=>Unit){
    running = true
    actor{
      while (running){
        handler(consoleReader.readLine("\33[32m> \33[0m"))
      }
    }
  }

  def stop(){
    //how to cancel an active call to ConsoleReader.readLine ?
    running = false
  }

}

Я также ищу совета относительно этого кода!

10
задан paradigmatic 17 July 2011 в 09:53
поделиться