From 30820942d6f98e57261592bb826e7da80f65a41e Mon Sep 17 00:00:00 2001 From: mquinson Date: Fri, 4 Feb 2005 09:56:49 +0000 Subject: [PATCH 1/1] Move gras example to their own subdir git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@854 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- examples/gras/Makefile.am | 2 + examples/gras/ping/.cvsignore | 3 + examples/gras/ping/Makefile.am | 26 +++ examples/gras/ping/ping.c | 201 +++++++++++++++++++++ examples/gras/ping/ping_deployment.txt | 4 + examples/gras/ping/ping_deployment_new.txt | 2 + examples/gras/ping/test_rl.in | 10 + examples/gras/ping/test_sg.in | 5 + 8 files changed, 253 insertions(+) create mode 100644 examples/gras/Makefile.am create mode 100644 examples/gras/ping/.cvsignore create mode 100644 examples/gras/ping/Makefile.am create mode 100644 examples/gras/ping/ping.c create mode 100644 examples/gras/ping/ping_deployment.txt create mode 100644 examples/gras/ping/ping_deployment_new.txt create mode 100755 examples/gras/ping/test_rl.in create mode 100755 examples/gras/ping/test_sg.in diff --git a/examples/gras/Makefile.am b/examples/gras/Makefile.am new file mode 100644 index 0000000000..02f998e0ae --- /dev/null +++ b/examples/gras/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS= ping # bandwidth alnem saturate +# gras_stub_generator WAN_3.platform.txt WAN_3.platform_2.txt diff --git a/examples/gras/ping/.cvsignore b/examples/gras/ping/.cvsignore new file mode 100644 index 0000000000..68ccecb0c3 --- /dev/null +++ b/examples/gras/ping/.cvsignore @@ -0,0 +1,3 @@ +.deps .libs Makefile Makefile.in _*.c ping_server ping_client ping_simulator +test_sg +test_rl diff --git a/examples/gras/ping/Makefile.am b/examples/gras/ping/Makefile.am new file mode 100644 index 0000000000..d3e4940cec --- /dev/null +++ b/examples/gras/ping/Makefile.am @@ -0,0 +1,26 @@ +INCLUDES= -I$(top_srcdir)/include +AM_CFLAGS=-g +TESTS= #test_rl test_sg +EXTRA_DIST=ping_deployment.txt $(TESTS) + +# check_SCRIPTS=$(TESTS) + +# AUTOMAKE variable definition +#check_PROGRAMS=ping_simulator ping_client ping_server + +#ping_simulator_SOURCES=_ping_simulator.c ping.c +#ping_simulator_LDADD= $(top_builddir)/src/libsimgrid.la + +#ping_client_SOURCES= _ping_client.c ping.c +#ping_server_SOURCES= _ping_server.c ping.c + +#ping_client_LDADD= $(top_builddir)/src/libgras.la +#ping_server_LDADD= $(top_builddir)/src/libgras.la + +# cleanup temps +#MAINTAINERCLEANFILES = _ping_simulator.c _ping_client.c _ping_server.c + +# generate temps +$(srcdir)/_ping_client.c $(srcdir)/_ping_server.c $(srcdir)/_ping_simulator.c: $(srcdir)/ping_deployment.txt $(top_srcdir)/examples/gras_stub_generator + cd $(srcdir) ; $(top_srcdir)/examples/gras_stub_generator ping ping_deployment.txt >/dev/null + diff --git a/examples/gras/ping/ping.c b/examples/gras/ping/ping.c new file mode 100644 index 0000000000..460e30400e --- /dev/null +++ b/examples/gras/ping/ping.c @@ -0,0 +1,201 @@ +/* $Id$ */ + +/* ping - ping/pong demo of GRAS features */ + +/* Copyright (c) 2003, 2004 Martin Quinson. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include +#include +#include + +#include "gras.h" + +XBT_LOG_NEW_DEFAULT_CATEGORY(Ping,"Messages specific to this example"); + +/* ********************************************************************** + * Comon code + * **********************************************************************/ + +typedef struct { + int dummy; +} msg_ping_t; + +/* Function prototypes */ +void register_messages(void); + +/* Code */ +void register_messages(void) { + + gras_msgtype_declare("ping", gras_datadesc_by_name("int")); + gras_msgtype_declare("pong", gras_datadesc_by_name("int")); +} + +/* ********************************************************************** + * Server code + * **********************************************************************/ + +/* Global private data */ +typedef struct { + gras_socket_t sock; + int endcondition; +} server_data_t; + +/* Function prototypes */ +int server_cb_ping_handler(gras_socket_t expeditor, + void *payload_data); +int server (int argc,char *argv[]); + + +int server_cb_ping_handler(gras_socket_t expeditor, + void *payload_data) { + + xbt_error_t errcode; + int msg=*(int*)payload_data; + gras_msgtype_t *pong_t=NULL; + + server_data_t *g=(server_data_t*)gras_userdata_get(); + + g->endcondition = 0; + INFO3("SERVER: >>>>>>>> Got message PING(%d) from %s:%d <<<<<<<<", + msg, + gras_socket_peer_name(expeditor), + gras_socket_peer_port(expeditor)); + + msg = 4321; + errcode = gras_msg_send(expeditor, gras_msgtype_by_name("pong"), &msg); + + if (errcode != no_error) { + ERROR1("SERVER: Unable answer with PONG: %s\n", xbt_error_name(errcode)); + gras_socket_close(g->sock); + return 1; + } + + INFO0("SERVER: >>>>>>>> Answed with PONG(4321) <<<<<<<<"); + g->endcondition = 1; + gras_socket_close(expeditor); + return 1; +} + +int server (int argc,char *argv[]) { + xbt_error_t errcode; + server_data_t *g; + gras_msgtype_t *ping_msg=NULL; + + int port = 4000; + + gras_init(&argc,argv, NULL); + g=gras_userdata_new(server_data_t); + + if (argc == 2) { + port=atoi(argv[1]); + } + + INFO1("Launch server (port=%d)", port); + + if ((errcode=gras_socket_server(port,&(g->sock)))) { + CRITICAL1("Error %s encountered while opening the server socket", + xbt_error_name(errcode)); + return 1; + } + + register_messages(); + register_messages(); + gras_cb_register(gras_msgtype_by_name("ping"),&server_cb_ping_handler); + + INFO1("SERVER: >>>>>>>> Listening on port %d <<<<<<<<", + gras_socket_my_port(g->sock)); + g->endcondition=0; + + errcode = gras_msg_handle(600.0); + if (errcode != no_error) + return errcode; + if (g->endcondition) + + if (!gras_if_RL()) + gras_os_sleep(1,0); + + gras_socket_close(g->sock); + free(g); + gras_exit(); + INFO0("SERVER: Done."); + return no_error; +} + +/* ********************************************************************** + * Client code + * **********************************************************************/ + +/* Global private data */ +typedef struct { + gras_socket_t sock; +} client_data_t; + +/* Function prototypes */ +int client (int argc,char *argv[]); + +int client(int argc,char *argv[]) { + xbt_error_t errcode; + client_data_t *g; + + gras_socket_t from; + int ping, pong; + + const char *host = "127.0.0.1"; + int port = 4000; + + gras_init(&argc, argv, NULL); + g=gras_userdata_new(client_data_t); + + if (argc == 3) { + host=argv[1]; + port=atoi(argv[2]); + } + + INFO2("Launch client (server on %s:%d)",host,port); + gras_os_sleep(1,0); /* Wait for the server startup */ + if ((errcode=gras_socket_client(host,port,&(g->sock)))) { + ERROR1("Client: Unable to connect to the server. Got %s", + xbt_error_name(errcode)); + return 1; + } + INFO2("Client: Connected to %s:%d.",host,port); + + + register_messages(); + + INFO2("Client: >>>>>>>> Connected to server which is on %s:%d <<<<<<<<", + gras_socket_peer_name(g->sock),gras_socket_peer_port(g->sock)); + + ping = 1234; + errcode = gras_msg_send(g->sock, gras_msgtype_by_name("ping"), &ping); + if (errcode != no_error) { + fprintf(stderr, "Client: Unable send PING to server (%s)\n", + xbt_error_name(errcode)); + gras_socket_close(g->sock); + return 1; + } + INFO3("Client: >>>>>>>> Message PING(%d) sent to %s:%d <<<<<<<<", + ping, + gras_socket_peer_name(g->sock),gras_socket_peer_port(g->sock)); + + if ((errcode=gras_msg_wait(6000,gras_msgtype_by_name("pong"), + &from,&pong))) { + ERROR1("Client: Why can't I get my PONG message like everyone else (%s)?", + xbt_error_name(errcode)); + gras_socket_close(g->sock); + return 1; + } + + INFO3("Client: >>>>>>>> Got PONG(%d) got from %s:%d <<<<<<<<", + pong, + gras_socket_peer_name(from),gras_socket_peer_port(from)); + + gras_socket_close(g->sock); + free(g); + gras_exit(); + INFO0("Client: Done."); + return 0; +} diff --git a/examples/gras/ping/ping_deployment.txt b/examples/gras/ping/ping_deployment.txt new file mode 100644 index 0000000000..ae5358728a --- /dev/null +++ b/examples/gras/ping/ping_deployment.txt @@ -0,0 +1,4 @@ + + Bellemare server 4000 + Gaston client Bellemare 4000 + diff --git a/examples/gras/ping/ping_deployment_new.txt b/examples/gras/ping/ping_deployment_new.txt new file mode 100644 index 0000000000..26ce47caac --- /dev/null +++ b/examples/gras/ping/ping_deployment_new.txt @@ -0,0 +1,2 @@ +"cpu A" server 4000 +"cpu B" client 125 4000 diff --git a/examples/gras/ping/test_rl.in b/examples/gras/ping/test_rl.in new file mode 100755 index 0000000000..89277208e4 --- /dev/null +++ b/examples/gras/ping/test_rl.in @@ -0,0 +1,10 @@ +#! @BASH@ -e +if [ x@EXEEXT@ = x ] ; then + wine= +else + wine=wine +fi + +$wine ./ping_server@EXEEXT@ 4000 $@ & +sleep 1 +$wine ./ping_client@EXEEXT@ 127.0.0.1 4000 $@ diff --git a/examples/gras/ping/test_sg.in b/examples/gras/ping/test_sg.in new file mode 100755 index 0000000000..b88ce16a6c --- /dev/null +++ b/examples/gras/ping/test_sg.in @@ -0,0 +1,5 @@ +#! @BASH@ +if test -x ./ping_simulator ; then + exec ./ping_simulator @srcdir@/../WAN_3.platform.txt @srcdir@/ping_deployment.txt +fi +exit 77 -- 2.20.1