From d57bc21118adcb191d9af4f2b0891d39e22a81eb Mon Sep 17 00:00:00 2001 From: mquinson Date: Sat, 15 Jul 2006 18:31:49 +0000 Subject: [PATCH] lesson 4 git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2584 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- doc/gtut-files/.cvsignore | 17 ++++++++++-- doc/gtut-files/4-callback.c | 47 ++++++++++++++++++++++++++++++++ doc/gtut-files/4-callback.output | 14 ++++++++++ doc/gtut-files/Makefile | 28 +++++++++++++++++-- 4 files changed, 100 insertions(+), 6 deletions(-) create mode 100644 doc/gtut-files/4-callback.c create mode 100644 doc/gtut-files/4-callback.output diff --git a/doc/gtut-files/.cvsignore b/doc/gtut-files/.cvsignore index 3480474721..14e510401b 100644 --- a/doc/gtut-files/.cvsignore +++ b/doc/gtut-files/.cvsignore @@ -6,14 +6,16 @@ _1-bones_client.c _1-bones_server.c _1-bones_simulator.c -_2-simple_client.c -_2-simple_server.c -_2-simple_simulator.c + 2-simple.mk 2-simple.trace 2-simple_client 2-simple_server 2-simple_simulator +_2-simple_client.c +_2-simple_server.c +_2-simple_simulator.c + 3-args.mk 3-args.trace 3-args_client @@ -22,3 +24,12 @@ _2-simple_simulator.c _3-args_client.c _3-args_server.c _3-args_simulator.c + +4-callback.mk +4-callback.trace +4-callback_client +4-callback_server +4-callback_simulator +_4-callback_client.c +_4-callback_server.c +_4-callback_simulator.c diff --git a/doc/gtut-files/4-callback.c b/doc/gtut-files/4-callback.c new file mode 100644 index 0000000000..15fbb14d4f --- /dev/null +++ b/doc/gtut-files/4-callback.c @@ -0,0 +1,47 @@ +#include + +int server_hello_cb(gras_msg_cb_ctx_t ctx, void *payload) { + gras_socket_t client = gras_msg_cb_ctx_from(ctx); + + fprintf(stderr,"Cool, we received the message from %s:%d.\n", + gras_socket_peer_name(client), gras_socket_peer_port(client)); + + return 1; +} /* end_of_callback */ + +int server(int argc, char *argv[]) { + gras_socket_t mysock; /* socket on which I listen */ + gras_socket_t toclient; /* socket used to write to the client */ + + gras_init(&argc,argv); + + gras_msgtype_declare("hello", NULL); + mysock = gras_socket_server(atoi(argv[1])); + + gras_cb_register(gras_msgtype_by_name("hello"),&server_hello_cb); + gras_msg_handle(60); + + gras_exit(); + return 0; +} + +int client(int argc, char *argv[]) { + gras_socket_t mysock; /* socket on which I listen */ + gras_socket_t toserver; /* socket used to write to the server */ + + gras_init(&argc,argv); + + gras_msgtype_declare("hello", NULL); + mysock = gras_socket_server_range(1024, 10000, 0, 0); + + fprintf(stderr,"Client ready; listening on %d\n", gras_socket_my_port(mysock)); + + gras_os_sleep(1.5); /* sleep 1 second and half */ + toserver = gras_socket_client(argv[1], atoi(argv[2])); + + gras_msg_send(toserver,gras_msgtype_by_name("hello"), NULL); + fprintf(stderr,"That's it, we sent the data to the server on %s\n", gras_socket_peer_name(toserver)); + + gras_exit(); + return 0; +} diff --git a/doc/gtut-files/4-callback.output b/doc/gtut-files/4-callback.output new file mode 100644 index 0000000000..2391af1636 --- /dev/null +++ b/doc/gtut-files/4-callback.output @@ -0,0 +1,14 @@ +$ ./test_server 12345 & ./test_client 127.0.0.1 12345 +Client ready; listening on 1024 +That's it, we sent the data to the server on 127.0.0.1 +[blaise:client:(19066) 0.000005] gras/gras.c:79: [gras/INFO] Exiting GRAS +Cool, we received the message from 127.0.0.1:1024. +[blaise:server:(19064) 0.000005] gras/gras.c:79: [gras/INFO] Exiting GRAS +$ ./test_simulator platform.xml test.xml +Client ready; listening on 1024 +That's it, we sent the data to the server on Jacquelin +[Boivin:client:(2) 0.000000] gras/gras.c:79: [gras/INFO] Exiting GRAS +Cool, we received the message from Boivin:1024. +[Jacquelin:server:(1) 0.000000] gras/gras.c:79: [gras/INFO] Exiting GRAS +[0.000000] msg/global.c:475: [msg_kernel/INFO] Congratulations ! Simulation terminated : all process are over +$ diff --git a/doc/gtut-files/Makefile b/doc/gtut-files/Makefile index b5bed1558e..d762cd36e5 100644 --- a/doc/gtut-files/Makefile +++ b/doc/gtut-files/Makefile @@ -1,7 +1,7 @@ # This works mainly on my box for now export LD_LIBRARY_PATH=$(GRAS_ROOT)/lib -all: 1-bones.output 2-simple.output 3-args.output +all: 1-bones.output 2-simple.output 3-args.output 4-callback.output veryclean: clean rm *.output @@ -61,10 +61,32 @@ clean:: 3-args_client 3-args_server 3-args_simulator: _3-args_client.c _3-args_server.c _3-args_simulator.c make -f 3-args.mk -_3-args_client.c _3-args_server.c _3-args_simulator.c: 3-args.c test.xml - ../../tools/gras/gras_stub_generator 3-args test.xml >/dev/null +_3-args_client.c _3-args_server.c _3-args_simulator.c: 3-args.c 3-args.xml + ../../tools/gras/gras_stub_generator 3-args 3-args.xml >/dev/null clean:: if [ -e 3-args.mk ] ; then make -f 3-args.mk clean; fi rm -f _3-args_client.c _3-args_server.c _3-args_simulator.c 3-args.trace 3-args.mk +# Lesson 4: callbacks +######################################## + +4-callback.output: 4-callback_client 4-callback_server 4-callback_simulator + echo '$$ ./test_server 12345 & ./test_client 127.0.0.1 12345' > $@ + ./4-callback_server 12345 >> $@ 2>&1& + ./4-callback_client 127.0.0.1 12345 >> $@ 2>&1 + sleep 1 + echo '$$ ./test_simulator platform.xml test.xml' >> $@ + ./4-callback_simulator gtut-platform.xml 3-args.xml >> $@ 2>&1 + echo '$$' >> $@ + +4-callback_client 4-callback_server 4-callback_simulator: _4-callback_client.c _4-callback_server.c _4-callback_simulator.c + make -f 4-callback.mk + +_4-callback_client.c _4-callback_server.c _4-callback_simulator.c: 4-callback.c 3-args.xml + ../../tools/gras/gras_stub_generator 4-callback 3-args.xml >/dev/null + +clean:: + if [ -e 4-callback.mk ] ; then make -f 4-callback.mk clean; fi + rm -f _4-callback_client.c _4-callback_server.c _4-callback_simulator.c 4-callback.trace 4-callback.mk + -- 2.20.1