Commit a2ab17ed authored by neverlord's avatar neverlord

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

parents 7cdc837f 70aa8807
html/
.DS_Store
*.o
*.dylib
test
*.png
*.beam
*.class
*.dat
*.dump
*.dylib
*.ii
*.s
*.tmp
*.la
*.lo
*.dump
*.beam
*.class
benchmarks/mailbox_performance
benchmarks/actor_creation
benchmarks/mixed_case
benchmarks/matching
theron_mailbox_performance
.libs/
*.o
*.png
*.s
*.tmp
.DS_Store
.deps/
libcppa.pc
.libs/
4threads
8threads
INSTALL
Makefile
Makefile.in
a.out*
aclocal.m4
autom4te.cache/
benchmarks/actor_creation
benchmarks/distributed
benchmarks/mailbox_performance
benchmarks/matching
benchmarks/mixed_case
blob/cppatest
callgrind.out*
config.*
configure
cppa.creator.user
depcomp
examples/announce_example_1
examples/announce_example_2
examples/announce_example_3
examples/announce_example_4
examples/announce_example_5
examples/dancing_kirby
examples/dining_philosophers
examples/hello_world_example
examples/math_actor_example
gen_server/parallel_send
gen_server/sequential_send
gen_server/test.dSYM/
depcomp
html/
install-sh
libcppa.Makefile
libcppa.pc
libcppa.so*
libtool
ltmain.sh
missing
unit_testing/Makefile.in
unit_testing/unit_tests
unit_testing/.deps/
config.*
configure
INSTALL
m4/libtool.m4
m4/lt*.m4
a.out*
missing
queue_test
cppa.creator.user
8threads
4threads
libcppa.Makefile
test
theron_mailbox_performance
unit_testing/.deps/
unit_testing/Makefile
unit_testing/Makefile.in
unit_testing/unit_tests
variadic_templates_test
variadic_templates_test.dSYM/
Makefile
unit_testing/Makefile
libcppa.so*
blob/cppatest
callgrind.out*
examples/announce_example_1
examples/announce_example_2
examples/announce_example_3
examples/announce_example_4
examples/announce_example_5
examples/hello_world_example
examples/math_actor_example
examples/dining_philosophers
examples/dancing_kirby
import scala.actors.Actor
import scala.actors.Actor._
import akka.actor.Actor.actorOf
import akka.actor.Actor.remote
import Console.println
case object KickOff
......@@ -14,41 +12,36 @@ object global {
class PingActor(num: Int, pong: akka.actor.ActorRef) extends akka.actor.Actor {
def receive = {
case Pong(value) if value == num => {
case Pong(`num`) => {
//println("Received final pong")
global.latch.countDown
self.exit
}
case Pong(value: Int) => {
//println("Received Pong(" + value + ")")
self.reply(Ping(value))
}
case KickOff => {
pong ! Ping(0)
context.stop(self)
}
case Pong(value) => sender ! Ping(value + 1)
case KickOff => pong ! Ping(0)
}
}
class PongActor extends akka.actor.Actor {
def receive = {
case Ping(value: Int) => {
//println("Received Ping(" + value + ")")
self.reply(Pong(value + 1))
}
case Ping(value) => sender ! Pong(value)
}
}
object pingApp {
def main(args: Array[String]) = {
if (args.size != 3) {
println("usage: pingApp (host) (port)")
println(" (connects to pong-service of (host) on given port)")
println("usage: pingApp (host) (port) (num pings)")
println(" connects to pong-service@(host):(port)")
System.exit(1)
}
val pong = remote.actorFor("pong-service", args(0), args(1).toInt)
val myPing = actorOf(new PingActor(args(2).toInt, pong)).start
remote.start("localhost", 64002).register("ping-service", myPing)
myPing ! KickOff
val host = args(0)
val port = args(1).toInt
val numPings = args(2).toInt
val pong = remote.actorFor("pong-service", host, port)
val ping = system.actorOf(Props(new PingActor(numPings, pong)), name="ping")
remote.start("localhost", 64002).register("ping-service", ping)
ping ! KickOff
global.latch.await
remote.shutdown
System.exit(0)
......@@ -59,11 +52,12 @@ object pongApp {
def main(args: Array[String]) = {
if (args.size != 1) {
println("usage: pongApp (port)")
println(" (binds pong-service to given port)")
println(" binds pong-service to given port")
System.exit(1)
}
val myPong = actorOf(new PongActor).start
remote.start("localhost", args(0).toInt)
.register("pong-service", myPong)
.register("pong-service",
actorOf(new PongActor).start)
}
}
......@@ -7,24 +7,31 @@ ping_loop(Parent, Pong) ->
{pong, X} ->
Pong ! {ping, self(), X - 1},
ping_loop(Parent, Pong);
{kickoff, Value} ->
Pong ! {ping, self(), Value},
{kickoff, X} ->
Pong ! {ping, self(), X},
ping_loop(Parent, Pong)
end.
server_loop(Pongs) ->
receive
{ping, Pid, Value} -> Pid ! {pong, Value}, server_loop(Pongs);
{ping, Pid, X} ->
Pid ! {pong, X},
server_loop(Pongs);
{add_pong, Pid, Node} ->
case lists:any(fun({N, _}) -> N == Node end, Pongs) of
true ->
Pid ! {ok},
Pid ! {ok, cached},
server_loop(Pongs);
false ->
case rpc:call(Node, erlang, whereis, [pong]) of
{badrpc, Reason} -> Pid ! {error, Reason};
{badrpc, Reason} ->
Pid ! {error, Reason},
server_loop(Pongs);
undefined ->
Pid ! {error, 'pong is undefined'},
server_loop(Pongs);
Pong ->
Pid ! {ok},
Pid ! {ok, added},
server_loop(Pongs ++ [{Node, Pong}])
end
end;
......@@ -46,7 +53,7 @@ add_pong_fun(Pong, Node, [Node|T]) -> add_pong_fun(Pong, Node, T);
add_pong_fun(Pong, Node, [H|T]) ->
Pong ! {add_pong, self(), H},
receive
{ok} -> add_pong_fun(Pong, Node, T);
{ok, _} -> add_pong_fun(Pong, Node, T);
{error, Reason} -> error(Reason)
after 10000 -> error(timeout)
end.
......
#!/bin/bash
if [[ $# -eq 0 ]] ; then
for i in *.scala; do
echo "scalac -cp ../../akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar \"$i\""
scalac -cp ../../akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar "$i"
echo "compile \"$i\""
scalac -cp $AKKA_LIBS "$i"
done
elif [[ $# -eq 1 ]] ; then
echo "scalac -cp ../../akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar \"$1.scala\""
scalac -cp ../../akka-microkernel-1.2/lib/akka/akka-actor-1.2.jar "$1.scala"
echo "compile \"$1.scala\""
scalac -cp $AKKA_LIBS "$1.scala"
fi
echo done
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