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,17 +95,9 @@ class AkkaRootTestee(n: Int) extends AkkaActor { ...@@ -91,17 +95,9 @@ 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() {
}
def main(args: Array[String]): Unit = {
if (args.size != 2) {
usage
throw new IllegalArgumentException("")
}
val n = args(1).toInt
if (args(0) == "threaded") {
val newMax = (1 << n) + 100 val newMax = (1 << n) + 100
System.setProperty("actors.maxPoolSize", newMax.toString) System.setProperty("actors.maxPoolSize", newMax.toString)
(new ThreadedTestee(self)).start ! Spread(n) (new ThreadedTestee(self)).start ! Spread(n)
...@@ -111,7 +107,8 @@ object ActorCreation { ...@@ -111,7 +107,8 @@ object ActorCreation {
Console.println("ERROR: expected " + (1 << n) + ", received " + v) Console.println("ERROR: expected " + (1 << n) + ", received " + v)
} }
} }
else if (args(0) == "threadless") {
def runThreadless() {
actor { actor {
(new ThreadlessTestee(self)).start ! Spread(n) (new ThreadlessTestee(self)).start ! Spread(n)
react { react {
...@@ -121,14 +118,32 @@ object ActorCreation { ...@@ -121,14 +118,32 @@ object ActorCreation {
} }
} }
} }
else if (args(0) == "akka") {
def runAkka() {
val system = ActorSystem() val system = ActorSystem()
system.actorOf(Props(new AkkaRootTestee(n))) ! GoAhead system.actorOf(Props(new AkkaRootTestee(n))) ! GoAhead
global.latch.await global.latch.await
system.shutdown system.shutdown
System.exit(0) System.exit(0)
} }
else usage
}
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
}
}
case _ => 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 {
def runServer(port: Int) {
(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 def run(args: List[String], paths: List[String], numPings: Option[Int], finalizer: (List[String], Int) => Unit): Unit = args match { @tailrec private def run(args: List[String], paths: List[String], numPings: Option[Int], finalizer: (List[String], Int) => Unit): Unit = args match {
case NumPings(num) :: tail => numPings 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,26 +346,14 @@ object Distributed { ...@@ -330,26 +346,14 @@ 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
def main(args: Array[String]): Unit = args match {
// server mode
case Array("mode=server", "remote_actors", IntStr(istr)) => (new ServerActor(istr.toInt)).start
case Array("mode=server", "akka") => {
val system = ActorSystem("pongServer", ConfigFactory.load.getConfig("pongServer"))
val pong = system.actorOf(Props(new AkkaServerActor(system)), "pong")
Unit
}
// client mode
case Array("mode=benchmark", "remote_actors", _*) => {
run(args.toList.drop(2), Nil, None, ((paths, x) => {
(new ClientActor(paths map (path => path match { case SimpleUri(host, port) => RemoteActorPath(path, host, port.toInt) }), x)).start (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) => { def runAkkaBenchmark(args: List[String]) {
run(args, Nil, None, ((paths, x) => {
val system = ActorSystem("benchmark", ConfigFactory.load.getConfig("benchmark")) val system = ActorSystem("benchmark", ConfigFactory.load.getConfig("benchmark"))
system.actorOf(Props(new AkkaClientActor(system))) ! RunAkkaClient(paths, x) system.actorOf(Props(new AkkaClientActor(system))) ! RunAkkaClient(paths, x)
global.latch.await global.latch.await
...@@ -357,6 +361,20 @@ object Distributed { ...@@ -357,6 +361,20 @@ object Distributed {
System.exit(0) System.exit(0)
})) }))
} }
}
object Main {
val prog = new Distributed
def main(args: Array[String]): Unit = args match {
// server mode
case Array("mode=server", "remote_actors", IntStr(port)) => prog.runServer(port)
case Array("mode=server", "akka") => prog.runAkkaServer
// client mode
case Array("mode=benchmark", "remote_actors", _*) => prog.runBenchmark(args.toList.drop(2))
case Array("mode=benchmark", "akka", _*) => prog.runAkkaBenchmark(args.toList.drop(2))
// 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) {
def usage() { val total = threads * msgs;
Console println "usage: (threaded|threadless|akka) (num_threads) (msgs_per_thread)" 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 main(args: Array[String]) = {
if (args.size != 3) {
usage
throw new IllegalArgumentException("")
} }
val threads = args(1).toInt def runThreaded() {
val msgs = args(2).toInt run((new ThreadedReceiver(total)).start, {(a: Actor) => a ! Msg})
val impl = List("threaded", "threadless", "akka").indexOf(args(0))
if (impl == -1) {
usage
} }
else if (impl < 2) { def runThreadless() {
val rcvRef = if (impl == 0) (new ThreadedReceiver(threads*msgs)).start run((new ThreadlessReceiver(total)).start, {(a: Actor) => a ! Msg})
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 { def runAkka() {
val system = ActorSystem() val system = ActorSystem()
val rcvRef = system.actorOf(Props(new AkkaReceiver(threads*msgs))) run(system.actorOf(Props(new AkkaReceiver(total))), {(a: AkkaActorRef) => a ! Msg})
for (i <- 0 until threads)
(new java.lang.Thread {
override def run() { for (_ <- 0 until msgs) rcvRef ! Msg }
}).start
global.latch.await global.latch.await
system.shutdown system.shutdown
System.exit(0) System.exit(0)
} }
}
object Main {
def usage() {
Console println "usage: (threaded|threadless|akka) (num_threads) (msgs_per_thread)"
}
def main(args: Array[String]): Unit = args match {
case Array(impl, IntStr(threads), IntStr(msgs)) => {
val prog = new MailboxPerformance(threads, msgs)
impl match {
case "threaded" => prog.runThreaded
case "threadless" => prog.runThreadless
case "akka" => prog.runAkka
case _ => usage
}
}
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,13 +13,8 @@ case class Msg5(val0: Int, val1: Int, val2: Int) ...@@ -9,13 +13,8 @@ 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) {
println("usage: Matching {NUM_LOOPS}")
System.exit(1)
}
val zero: Long = 0 val zero: Long = 0
val numLoops = args(0).toLong
var msg1Matched: Long = 0; var msg1Matched: Long = 0;
var msg2Matched: Long = 0; var msg2Matched: Long = 0;
var msg3Matched: Long = 0; var msg3Matched: Long = 0;
...@@ -53,3 +52,10 @@ object Matching { ...@@ -53,3 +52,10 @@ object Matching {
println("msg1Matched = " + msg1Matched.toString) println("msg1Matched = " + msg1Matched.toString)
} }
} }
object Main {
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)
Console println "usage: ('threaded'|'threadless'|'akka') (num rings) (ring size) (initial token value) (repetitions)" final val initMsg = Init(ringSize, initToken, reps)
System.exit(1) // why doesn't exit return Nothing? def runThreaded() {
throw new RuntimeException("")
}
def main(args: Array[String]): Unit = {
if (args.size != 5) usage
val numRings = args(1).toInt
val ringSize = args(2).toInt
val initialTokenValue = args(3).toInt
val repetitions = args(4).toInt
val initMsg = Init(ringSize, initialTokenValue, repetitions)
val numMessages = (numRings + (numRings * repetitions))
val impl = args(0)
if (impl == "threaded") {
//System.setProperty("actors.maxPoolSize", (numRings + (numRings * ringSize) + 10).toString)
val s = (new ThreadedSupervisor(numMessages)).start val s = (new ThreadedSupervisor(numMessages)).start
for (_ <- 0 until numRings) for (_ <- 0 until numRings)
(new ThreadedChainMaster(s)).start ! initMsg (new ThreadedChainMaster(s)).start ! initMsg
} }
else if (impl == "threadless") { def runThreadless() {
val s = (new ThreadlessSupervisor(numMessages)).start val s = (new ThreadlessSupervisor(numMessages)).start
for (_ <- 0 until numRings) for (_ <- 0 until numRings)
(new ThreadlessChainMaster(s)).start ! initMsg (new ThreadlessChainMaster(s)).start ! initMsg
} }
else if (impl == "akka") { def runAkka() {
val system = ActorSystem(); val system = ActorSystem();
val s = system.actorOf(Props(new AkkaSupervisor(numMessages))) val s = system.actorOf(Props(new AkkaSupervisor(numMessages)))
for (_ <- 0 until numRings) for (_ <- 0 until numRings)
system.actorOf(Props(new AkkaChainMaster(s))) ! initMsg system.actorOf(Props(new AkkaChainMaster(s))) ! initMsg
import System.out.println
println("awaiting latch")
global.latch.await global.latch.await
println("shutdown akka system")
system.shutdown system.shutdown
println("exit");
System.exit(0) System.exit(0)
} }
else usage }
object Main {
def usage() = {
Console println "usage: ('threaded'|'threadless'|'akka') (num rings) (ring size) (initial token value) (repetitions)"
System.exit(1) // why doesn't exit return Nothing?
}
def main(args: Array[String]): Unit = args match {
case Array(impl, IntStr(numRings), IntStr(ringSize), IntStr(initToken), IntStr(reps)) => {
val mc = new MixedCase(numRings, ringSize, initToken, reps);
impl match {
case "threaded" => mc.runThreaded
case "threadless" => mc.runThreadless
case "akka" => mc.runAkka
case _ => 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