Commit 0f84f0a6 authored by Dominik Charousset's avatar Dominik Charousset

Merge branch 'unstable' of github.com:Neverlord/libcppa into unstable

parents 975b8ccb 58d3373d
...@@ -61,7 +61,12 @@ endif () ...@@ -61,7 +61,12 @@ endif ()
if (ENABLE_DEBUG) if (ENABLE_DEBUG)
set(CMAKE_BUILD_TYPE Debug) set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCPPA_DEBUG") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCPPA_DEBUG")
else () #else ()
# set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif ()
# set build default build type if not set
if (not CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo) set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif () endif ()
...@@ -155,6 +160,10 @@ if (NOT DISABLE_CONTEXT_SWITCHING) ...@@ -155,6 +160,10 @@ if (NOT DISABLE_CONTEXT_SWITCHING)
) )
endif () endif ()
if (BOOST_ROOT)
# Prevent falling back to system paths when using a custom Boost prefix.
set(Boost_NO_SYSTEM_PATHS true)
endif ()
find_package(Boost REQUIRED) find_package(Boost REQUIRED)
find_package(PTHREAD REQUIRED) find_package(PTHREAD REQUIRED)
......
#!/bin/bash #!/bin/bash
echo "./$@" | ./exec.sh echo "../build/bin/$@" | ./exec.sh
#!/bin/bash #!/bin/bash
echo "erl -noshell -noinput +P 20000000 -setcookie abc123 -sname benchmark -s $@ -s init stop" | ./exec.sh echo "erl -noshell -noinput +P 20000000 -setcookie abc123 -sname benchmark -pa erlang -s $@ -s init stop" | ./exec.sh
#!/bin/bash
for i in *.erl; do
echo "compile $i ..."
erlc "$i"
done
echo done
#!/bin/bash
if [[ $# -eq 0 ]] ; then
for i in *.scala; do
echo "compile \"$i\""
scalac -unchecked -cp $AKKA_LIBS "$i"
done
elif [[ $# -eq 1 ]] ; then
echo "compile \"$1.scala\""
scalac -unchecked -cp $AKKA_LIBS "$1.scala"
fi
echo done
#!/bin/bash
usage="\
Usage: $0 INTERVAL CMD
example: $0 0.5 \"my_benchmark_program arg0 arg1 arg2 \"
"
if [ "$#" != "2" ]; then
echo "${usage}" 1>&2
exit
fi
runtime=""
line=$(cat /proc/1/status | grep "^Vm" | awk 'BEGIN {printf "%-10s", "elapsed"} {printf "%-20s", $1} END {print ""}')
exec $2 &
pid=$!
interval=$1
dtime=$(date "+%s%N")
time0=$(echo "$dtime / 1000000" | bc -q)
fields=$(echo "$line" | wc -w)
while [ "$fields" -gt "1" ]; do
echo "$line"
if [ -n "$runtime" ]; then
sleep $interval
runtime=$(echo $runtime + $interval | bc -q)
else
runtime=0
fi
dtime=$(date "+%s%N")
timeN=$(echo "( $dtime / 1000000 ) - $time0" | bc -q)
timeN_sec=$(echo "scale=2; $timeN / 1000" | bc)
line=$(cat /proc/${pid}/status 2>/dev/null | grep "^Vm" | awk -v rt=$timeN_sec 'BEGIN {printf "%-10s", rt} {printf "%-20s", ($2 " " $3)} END {print ""}')
fields=$(echo "$line" | wc -w)
done
package org.libcppa.actor_creation
import org.libcppa.utility.IntStr
import scala.actors.Actor import scala.actors.Actor
import scala.actors.Actor._ import scala.actors.Actor._
import akka.actor.{ Props, Actor => AkkaActor, ActorRef => AkkaActorRef, ActorSystem } import akka.actor.{ Props, Actor => AkkaActor, ActorRef => AkkaActorRef, ActorSystem }
...@@ -91,44 +95,55 @@ class AkkaRootTestee(n: Int) extends AkkaActor { ...@@ -91,44 +95,55 @@ class AkkaRootTestee(n: Int) extends AkkaActor {
} }
} }
object ActorCreation { class ActorCreation(n: Int) {
def usage() {
Console println "usage: (threaded|threadless|akka) POW\n creates 2^POW actors of given impl" def runThreaded() {
} val newMax = (1 << n) + 100
def main(args: Array[String]): Unit = { System.setProperty("actors.maxPoolSize", newMax.toString)
if (args.size != 2) { (new ThreadedTestee(self)).start ! Spread(n)
usage receive {
throw new IllegalArgumentException("") case Result(v) =>
if (v != (1 << n))
Console.println("ERROR: expected " + (1 << n) + ", received " + v)
} }
val n = args(1).toInt }
if (args(0) == "threaded") {
val newMax = (1 << n) + 100 def runThreadless() {
System.setProperty("actors.maxPoolSize", newMax.toString) actor {
(new ThreadedTestee(self)).start ! Spread(n) (new ThreadlessTestee(self)).start ! Spread(n)
receive { react {
case Result(v) => case Result(v) =>
if (v != (1 << n)) if (v != (1 << n))
Console.println("ERROR: expected " + (1 << n) + ", received " + v) Console.println("ERROR: expected " + (1 << n) + ", received " + v)
} }
} }
else if (args(0) == "threadless") { }
actor {
(new ThreadlessTestee(self)).start ! Spread(n) def runAkka() {
react { val system = ActorSystem()
case Result(v) => system.actorOf(Props(new AkkaRootTestee(n))) ! GoAhead
if (v != (1 << n)) global.latch.await
Console.println("ERROR: expected " + (1 << n) + ", received " + v) system.shutdown
} System.exit(0)
}
}
object Main {
def usage() {
Console println "usage: (threaded|threadless|akka) POW\n creates 2^POW actors of given impl"
}
def main(args: Array[String]): Unit = args match {
case Array(impl, IntStr(n)) => {
val prog = new ActorCreation(n)
impl match {
case "threaded" => prog.runThreaded
case "threadless" => prog.runThreadless
case "akka" => prog.runAkka
case _ => usage
} }
} }
else if (args(0) == "akka") { case _ => usage
val system = ActorSystem()
system.actorOf(Props(new AkkaRootTestee(n))) ! GoAhead
global.latch.await
system.shutdown
System.exit(0)
}
else usage
} }
} }
package org.libcppa.distributed
import org.libcppa.utility._
import scala.actors._ import scala.actors._
import scala.actors.Actor.self import scala.actors.Actor.self
import scala.actors.remote.RemoteActor import scala.actors.remote.RemoteActor
...@@ -313,12 +317,24 @@ class AkkaClientActor(system: ActorSystem) extends AkkaActor { ...@@ -313,12 +317,24 @@ class AkkaClientActor(system: ActorSystem) extends AkkaActor {
} }
} }
object Distributed { class Distributed {
@tailrec def run(args: List[String], paths: List[String], numPings: Option[Int], finalizer: (List[String], Int) => Unit): Unit = args match { def runServer(port: Int) {
case NumPings(num) :: tail => numPings match { (new ServerActor(port)).start
}
def runAkkaServer() {
val system = ActorSystem("pongServer", ConfigFactory.load.getConfig("pongServer"))
system.actorOf(Props(new AkkaServerActor(system)), "pong")
}
//private val NumPings = "num_pings=([0-9]+)".r
private val SimpleUri = "([0-9a-zA-Z\\.]+):([0-9]+)".r
@tailrec private def run(args: List[String], paths: List[String], numPings: Option[Int], finalizer: (List[String], Int) => Unit): Unit = args match {
case KeyValuePair("num_pings", IntStr(num)) :: tail => numPings match {
case Some(x) => throw new IllegalArgumentException("\"num_pings\" already defined, first value = " + x + ", second value = " + num) case Some(x) => throw new IllegalArgumentException("\"num_pings\" already defined, first value = " + x + ", second value = " + num)
case None => run(tail, paths, Some(num.toInt), finalizer) case None => run(tail, paths, Some(num), finalizer)
} }
case arg :: tail => run(tail, arg :: paths, numPings, finalizer) case arg :: tail => run(tail, arg :: paths, numPings, finalizer)
case Nil => numPings match { case Nil => numPings match {
...@@ -330,33 +346,35 @@ object Distributed { ...@@ -330,33 +346,35 @@ object Distributed {
} }
} }
val IntStr = "([0-9]+)".r def runBenchmark(args: List[String]) {
val NumPings = "num_pings=([0-9]+)".r run(args, Nil, None, ((paths, x) => {
val SimpleUri = "([0-9a-zA-Z\\.]+):([0-9]+)".r (new ClientActor(paths map (path => path match { case SimpleUri(host, port) => RemoteActorPath(path, host, port.toInt) }), x)).start
}))
}
def runAkkaBenchmark(args: List[String]) {
run(args, Nil, None, ((paths, x) => {
val system = ActorSystem("benchmark", ConfigFactory.load.getConfig("benchmark"))
system.actorOf(Props(new AkkaClientActor(system))) ! RunAkkaClient(paths, x)
global.latch.await
system.shutdown
System.exit(0)
}))
}
}
object Main {
val prog = new Distributed
def main(args: Array[String]): Unit = args match { def main(args: Array[String]): Unit = args match {
// server mode // server mode
case Array("mode=server", "remote_actors", IntStr(istr)) => (new ServerActor(istr.toInt)).start case Array("mode=server", "remote_actors", IntStr(port)) => prog.runServer(port)
case Array("mode=server", "akka") => { case Array("mode=server", "akka") => prog.runAkkaServer
val system = ActorSystem("pongServer", ConfigFactory.load.getConfig("pongServer"))
val pong = system.actorOf(Props(new AkkaServerActor(system)), "pong")
Unit
}
// client mode // client mode
case Array("mode=benchmark", "remote_actors", _*) => { case Array("mode=benchmark", "remote_actors", _*) => prog.runBenchmark(args.toList.drop(2))
run(args.toList.drop(2), Nil, None, ((paths, x) => { case Array("mode=benchmark", "akka", _*) => prog.runAkkaBenchmark(args.toList.drop(2))
(new ClientActor(paths map (path => path match { case SimpleUri(host, port) => RemoteActorPath(path, host, port.toInt) }), x)).start
}))
}
case Array("mode=benchmark", "akka", _*) => {
run(args.toList.drop(2), Nil, None, ((paths, x) => {
val system = ActorSystem("benchmark", ConfigFactory.load.getConfig("benchmark"))
system.actorOf(Props(new AkkaClientActor(system))) ! RunAkkaClient(paths, x)
global.latch.await
system.shutdown
System.exit(0)
}))
}
// error // error
case _ => { case _ => {
println("Running in server mode:\n" + println("Running in server mode:\n" +
......
package org.libcppa.mailbox_performance
import org.libcppa.utility._
import scala.actors.Actor import scala.actors.Actor
import scala.actors.Actor._ import scala.actors.Actor._
import akka.actor.{ Props, Actor => AkkaActor, ActorRef => AkkaActorRef, ActorSystem } import akka.actor.{ Props, Actor => AkkaActor, ActorRef => AkkaActorRef, ActorSystem }
...@@ -42,39 +46,44 @@ class AkkaReceiver(n: Long) extends akka.actor.Actor { ...@@ -42,39 +46,44 @@ class AkkaReceiver(n: Long) extends akka.actor.Actor {
} }
} }
object MailboxPerformance { class MailboxPerformance(threads: Int, msgs: Int) {
val total = threads * msgs;
def run[T](testee: T, fun: T => Unit) {
for (_ <- 0 until threads) {
(new Thread {
override def run() { for (_ <- 0 until msgs) fun(testee) }
}).start
}
}
def runThreaded() {
run((new ThreadedReceiver(total)).start, {(a: Actor) => a ! Msg})
}
def runThreadless() {
run((new ThreadlessReceiver(total)).start, {(a: Actor) => a ! Msg})
}
def runAkka() {
val system = ActorSystem()
run(system.actorOf(Props(new AkkaReceiver(total))), {(a: AkkaActorRef) => a ! Msg})
global.latch.await
system.shutdown
System.exit(0)
}
}
object Main {
def usage() { def usage() {
Console println "usage: (threaded|threadless|akka) (num_threads) (msgs_per_thread)" Console println "usage: (threaded|threadless|akka) (num_threads) (msgs_per_thread)"
} }
def main(args: Array[String]) = { def main(args: Array[String]): Unit = args match {
if (args.size != 3) { case Array(impl, IntStr(threads), IntStr(msgs)) => {
usage val prog = new MailboxPerformance(threads, msgs)
throw new IllegalArgumentException("") impl match {
} case "threaded" => prog.runThreaded
val threads = args(1).toInt case "threadless" => prog.runThreadless
val msgs = args(2).toInt case "akka" => prog.runAkka
val impl = List("threaded", "threadless", "akka").indexOf(args(0)) case _ => usage
if (impl == -1) { }
usage
}
else if (impl < 2) {
val rcvRef = if (impl == 0) (new ThreadedReceiver(threads*msgs)).start
else (new ThreadlessReceiver(threads*msgs)).start
for (i <- 0 until threads)
(new java.lang.Thread {
override def run() { for (_ <- 0 until msgs) rcvRef ! Msg }
}).start
}
else {
val system = ActorSystem()
val rcvRef = system.actorOf(Props(new AkkaReceiver(threads*msgs)))
for (i <- 0 until threads)
(new java.lang.Thread {
override def run() { for (_ <- 0 until msgs) rcvRef ! Msg }
}).start
global.latch.await
system.shutdown
System.exit(0)
} }
case _ => usage
} }
} }
CC=scalac SCALAC=scalac
LIBPATH=/home/neverlord/akka-2.0.1/lib/akka LIBPATH=/home/neverlord/akka-2.0.3/lib/akka
CLASSPATH=$(shell for i in $(LIBPATH)/*.jar ; do printf %s $$i: ; done) CLASSPATH=$(shell for i in $(LIBPATH)/*.jar ; do printf %s $$i: ; done)
#CLASSPATH=$(LIBPATH)/akka-kernel-2.0.3.jar:$(LIBPATH)/akka-actor-2.0.3.jar
FLAGS=-cp $(CLASSPATH) FLAGS=-cp $(CLASSPATH)
FILES=ActorCreation.scala Distributed.scala MailboxPerformance.scala MixedCase.scala Matching.scala #FILES=ActorCreation.scala Distributed.scala MailboxPerformance.scala MixedCase.scala Matching.scala
CLASSES=$(FILES:.scala=.class) #CLASS_FILES=$(FILES:.scala=.class)
%.class: %.scala FILES=ActorCreation.scala Distributed.scala MailboxPerformance.scala Matching.scala MixedCase.scala
$(CC) $(FLAGS) $< CLASS_FILES=$(foreach FILE,$(FILES),org/libcppa/$(shell echo $(FILE:.scala=) | sed 's/\(.\)\([A-Z]\)/\1_\2/g' | tr [:upper:] [:lower:])/$(FILE:.scala=.class))
all: $(CLASSES) UTILITY=org/libcppa/utility/Utility.class
all: $(CLASS_FILES)
org/libcppa/utility/Utility.class: Utility.scala
$(SCALAC) $(FLAGS) Utility.scala
#$(CLASS_FILES): $(FILES) org/libcppa/utility/Utility.class
org/libcppa/actor_creation/ActorCreation.class: ActorCreation.scala $(UTILITY)
$(SCALAC) $(FLAGS) $<
org/libcppa/distributed/Distributed.class: Distributed.scala $(UTILITY)
$(SCALAC) $(FLAGS) $<
org/libcppa/mailbox_performance/MailboxPerformance.class: MailboxPerformance.scala $(UTILITY)
$(SCALAC) $(FLAGS) $<
org/libcppa/matching/Matching.class: Matching.scala $(UTILITY)
$(SCALAC) $(FLAGS) $<
org/libcppa/mixed_case/MixedCase.class: MixedCase.scala $(UTILITY)
$(SCALAC) $(FLAGS) $<
clean: clean:
rm -f *.class rm -rf org/
.PHONY: all clean .PHONY: all clean
package org.libcppa.matching
import org.libcppa.utility._
import Console.println import Console.println
import scala.{PartialFunction => PF} import scala.{PartialFunction => PF}
...@@ -9,47 +13,49 @@ case class Msg5(val0: Int, val1: Int, val2: Int) ...@@ -9,47 +13,49 @@ case class Msg5(val0: Int, val1: Int, val2: Int)
case class Msg6(val0: Int, val1: Double, val2: String) case class Msg6(val0: Int, val1: Double, val2: String)
object Matching { object Matching {
def main(args: Array[String]) = { def apply(numLoops: Long) {
if (args.size != 1) { val zero: Long = 0
println("usage: Matching {NUM_LOOPS}") var msg1Matched: Long = 0;
System.exit(1) var msg2Matched: Long = 0;
} var msg3Matched: Long = 0;
val zero: Long = 0 var msg4Matched: Long = 0;
val numLoops = args(0).toLong var msg5Matched: Long = 0;
var msg1Matched: Long = 0; var msg6Matched: Long = 0;
var msg2Matched: Long = 0; val partFun: PF[Any, Unit] = {
var msg3Matched: Long = 0; case Msg1(0) => msg1Matched += 1
var msg4Matched: Long = 0; case Msg2(0.0) => msg2Matched += 1
var msg5Matched: Long = 0; case Msg3(List(0)) => msg3Matched += 1
var msg6Matched: Long = 0; case Msg4(0, "0") => msg4Matched += 1
val partFun: PF[Any, Unit] = { case Msg5(0, 0, 0) => msg5Matched += 1
case Msg1(0) => msg1Matched += 1 case Msg6(0, 0.0, "0") => msg6Matched += 1
case Msg2(0.0) => msg2Matched += 1 }
case Msg3(List(0)) => msg3Matched += 1 val m1: Any = Msg1(0)
case Msg4(0, "0") => msg4Matched += 1 val m2: Any = Msg2(0.0)
case Msg5(0, 0, 0) => msg5Matched += 1 val m3: Any = Msg3(List(0))
case Msg6(0, 0.0, "0") => msg6Matched += 1 val m4: Any = Msg4(0, "0")
} val m5: Any = Msg5(0, 0, 0)
val m1: Any = Msg1(0) val m6: Any = Msg6(0, 0.0, "0")
val m2: Any = Msg2(0.0) for (_ <- zero until numLoops) {
val m3: Any = Msg3(List(0)) partFun(m1)
val m4: Any = Msg4(0, "0") partFun(m2)
val m5: Any = Msg5(0, 0, 0) partFun(m3)
val m6: Any = Msg6(0, 0.0, "0") partFun(m4)
for (_ <- zero until numLoops) { partFun(m5)
partFun(m1) partFun(m6)
partFun(m2) }
partFun(m3) assert(msg1Matched == numLoops)
partFun(m4) assert(msg2Matched == numLoops)
partFun(m5) assert(msg3Matched == numLoops)
partFun(m6) assert(msg4Matched == numLoops)
} assert(msg5Matched == numLoops)
assert(msg1Matched == numLoops) assert(msg6Matched == numLoops)
assert(msg2Matched == numLoops) println("msg1Matched = " + msg1Matched.toString)
assert(msg3Matched == numLoops) }
assert(msg4Matched == numLoops) }
assert(msg5Matched == numLoops)
assert(msg6Matched == numLoops) object Main {
println("msg1Matched = " + msg1Matched.toString) def main(args: Array[String]) = args match {
case Array(IntStr(numLoops)) => Matching(numLoops)
case _ => println("usage: Matching {NUM_LOOPS}")
} }
} }
package org.libcppa.mixed_case
import org.libcppa.utility.IntStr
import scala.actors.Actor import scala.actors.Actor
import scala.actors.Actor._ import scala.actors.Actor._
import akka.actor.{ Props, Actor => AkkaActor, ActorRef => AkkaActorRef, ActorSystem } import akka.actor.{ Props, Actor => AkkaActor, ActorRef => AkkaActorRef, ActorSystem }
...@@ -212,41 +216,52 @@ class AkkaSupervisor(numMessages: Int) extends AkkaActor { ...@@ -212,41 +216,52 @@ class AkkaSupervisor(numMessages: Int) extends AkkaActor {
} }
} }
object MixedCase { class MixedCase(numRings: Int, ringSize: Int, initToken: Int, reps: Int) {
def usage(): Nothing = { final val numMessages = numRings + (numRings * reps)
final val initMsg = Init(ringSize, initToken, reps)
def runThreaded() {
val s = (new ThreadedSupervisor(numMessages)).start
for (_ <- 0 until numRings)
(new ThreadedChainMaster(s)).start ! initMsg
}
def runThreadless() {
val s = (new ThreadlessSupervisor(numMessages)).start
for (_ <- 0 until numRings)
(new ThreadlessChainMaster(s)).start ! initMsg
}
def runAkka() {
val system = ActorSystem();
val s = system.actorOf(Props(new AkkaSupervisor(numMessages)))
for (_ <- 0 until numRings)
system.actorOf(Props(new AkkaChainMaster(s))) ! initMsg
import System.out.println
println("awaiting latch")
global.latch.await
println("shutdown akka system")
system.shutdown
println("exit");
System.exit(0)
}
}
object Main {
def usage() = {
Console println "usage: ('threaded'|'threadless'|'akka') (num rings) (ring size) (initial token value) (repetitions)" Console println "usage: ('threaded'|'threadless'|'akka') (num rings) (ring size) (initial token value) (repetitions)"
System.exit(1) // why doesn't exit return Nothing? System.exit(1) // why doesn't exit return Nothing?
throw new RuntimeException("") }
}
def main(args: Array[String]): Unit = { def main(args: Array[String]): Unit = args match {
if (args.size != 5) usage case Array(impl, IntStr(numRings), IntStr(ringSize), IntStr(initToken), IntStr(reps)) => {
val numRings = args(1).toInt val mc = new MixedCase(numRings, ringSize, initToken, reps);
val ringSize = args(2).toInt impl match {
val initialTokenValue = args(3).toInt case "threaded" => mc.runThreaded
val repetitions = args(4).toInt case "threadless" => mc.runThreadless
val initMsg = Init(ringSize, initialTokenValue, repetitions) case "akka" => mc.runAkka
val numMessages = (numRings + (numRings * repetitions)) case _ => usage
val impl = args(0) }
if (impl == "threaded") {
//System.setProperty("actors.maxPoolSize", (numRings + (numRings * ringSize) + 10).toString)
val s = (new ThreadedSupervisor(numMessages)).start
for (_ <- 0 until numRings)
(new ThreadedChainMaster(s)).start ! initMsg
}
else if (impl == "threadless") {
val s = (new ThreadlessSupervisor(numMessages)).start
for (_ <- 0 until numRings)
(new ThreadlessChainMaster(s)).start ! initMsg
}
else if (impl == "akka") {
val system = ActorSystem();
val s = system.actorOf(Props(new AkkaSupervisor(numMessages)))
for (_ <- 0 until numRings)
system.actorOf(Props(new AkkaChainMaster(s))) ! initMsg
global.latch.await
system.shutdown
System.exit(0)
} }
else usage case _ => usage
} }
} }
package org.libcppa.utility
object IntStr {
val IntRegex = "([0-9]+)".r
def unapply(s: String): Option[Int] = s match {
case IntRegex(`s`) => Some(s.toInt)
case _ => None
}
}
object KeyValuePair {
val Rx = "([^=])+=([^=]*)".r
def unapply(s: String): Option[Pair[String, String]] = s match {
case Rx(key, value) => Some(Pair(key, value))
case _ => None
}
}
class Utility {
}
#!/bin/bash #!/bin/bash
#export JAVA_OPTS="-Xmx1024" #export JAVA_OPTS="-Xmx1024"
#echo "scala -cp /home/neverlord/akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar $@" | ./exec.sh if [ ! -d $PWD/scala ] ; then
JARS=/home/neverlord/akka-microkernel-1.2/lib/akka/activation-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-actor-tests-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-amqp-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-beanstalk-mailbox-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-camel-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-camel-typed-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-dispatcher-extras-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-file-mailbox-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-http-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-kernel-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-mailboxes-common-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-redis-mailbox-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-remote-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-scalaz-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-slf4j-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-spring-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-stm-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-testkit-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/akka-typed-actor-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/amqp-client-2.5.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/aopalliance-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/asm-3.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/aspectwerkz-2.2.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/beanstalk_client-1.4.5.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/camel-core-2.7.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-cli-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-codec-1.4.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-io-2.0.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-logging-1.1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-management-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/commons-pool-1.5.5.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/dispatch-json_2.9.0-0.8.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/guice-all-2.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/h2-lzf-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/hawtdispatch-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/hawtdispatch-scala-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jackson-core-asl-1.8.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jackson-mapper-asl-1.8.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jaxb-api-2.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jaxb-impl-2.1.12.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-core-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-json-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-scala-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jersey-server-1.3.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jettison-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-continuation-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-http-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-io-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-security-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-server-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-servlet-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-util-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jetty-xml-7.4.0.v20110414.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jsr250-api-1.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jsr311-api-1.1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/jsr311-api-1.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/junit-4.8.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/log4j-1.2.16.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/multiverse-alpha-0.6.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/netty-3.2.5.Final.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/objenesis-1.2.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/protobuf-java-2.4.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/redisclient_2.9.0-2.3.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/scalaz-core_2.9.0-1-6.0.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/servlet-api-2.5.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/sjson_2.9.0-0.11.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/slf4j-api-1.5.8.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/slf4j-api-1.6.0.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/slf4j-log4j12-1.5.8.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-aop-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-asm-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-beans-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-context-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-core-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/spring-expression-3.0.5.RELEASE.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/stax-api-1.0.1.jar:/home/neverlord/akka-microkernel-1.2/lib/akka/stax-api-1.0-2.jar echo "$PWD/scala is not a valid directory!"
echo "scala -cp $JARS $@" | ./exec.sh exit
fi
AKKA_LIBS=/$HOME/akka-2.0.3/lib/scala-library.jar
for JAR in /$HOME/akka-2.0.3/lib/akka/*.jar ; do
AKKA_LIBS=$JAR:$AKKA_LIBS
done
arg0=org.libcppa.$1.Main
shift
JARS="$AKKA_LIBS":$PWD/scala/
echo "java -cp $JARS $arg0 $@" | ./exec.sh
...@@ -265,3 +265,4 @@ src/buffer.cpp ...@@ -265,3 +265,4 @@ src/buffer.cpp
cppa/message_future.hpp cppa/message_future.hpp
cppa/detail/fd_util.hpp cppa/detail/fd_util.hpp
src/fd_util.cpp src/fd_util.cpp
benchmarks/scala/Utility.scala
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment