Author: reto
Date: Mon Dec 27 16:16:05 2010
New Revision: 1053099
URL: http://svn.apache.org/viewvc?rev=1053099&view=rev
Log:
CLEREZZA-375: added support for temination listeners
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala?rev=1053099&r1=1053098&r2=1053099&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
Mon Dec 27 16:16:05 2010
@@ -64,6 +64,7 @@ class Shell(factory: InterpreterFactory,
private var bindings = Set[(String, String, Any)]()
private var imports = Set[String]()
+ private var terminationListeners = Set[Shell.TerminationListener]();
val interpreterLoop = new InterpreterLoop(new BufferedReader(new
InputStreamReader(System.in)), new PrintWriter(out, true)) {
@@ -182,6 +183,9 @@ class Shell(factory: InterpreterFactory,
try {
interpreterLoop.main(Array[String]())
} finally {
+ for (l <- terminationListeners) {
+ l.terminated
+ }
println("console terminated")
}
}
@@ -203,6 +207,17 @@ class Shell(factory: InterpreterFactory,
imports += importValue
}
+ def addTerminationListener(l: Shell.TerminationListener) {
+ terminationListeners += l
+ }
+ def removeTerminationListener(l: Shell.TerminationListener) {
+ terminationListeners -= l
+ }
+}
+object Shell {
+ trait TerminationListener {
+ def terminated: Unit
+ }
}
\ No newline at end of file