X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fb16e0570dc67c637041ae0e5c339e29bc35078b..cc01c6a871dbbfd0cc84e26eb9f94aeb539e613e:/examples/gras/spawn/spawn_father.c diff --git a/examples/gras/spawn/spawn_father.c b/examples/gras/spawn/spawn_father.c index 0f012637f8..12cc6ae76a 100644 --- a/examples/gras/spawn/spawn_father.c +++ b/examples/gras/spawn/spawn_father.c @@ -1,8 +1,7 @@ -/* $Id$ */ - /* spawn - demo of the gras_agent_spawn function */ -/* Copyright (c) 2007 Martin Quinson. All rights reserved. */ +/* Copyright (c) 2007, 2009, 2010. The SimGrid Team. + * 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. */ @@ -18,86 +17,90 @@ typedef struct { } father_data_t; -static int father_cb_ping_handler(gras_msg_cb_ctx_t ctx, void *payload) { - +static int father_cb_ping_handler(gras_msg_cb_ctx_t ctx, void *payload) +{ + xbt_ex_t e; /* 1. Get the payload into the msg variable, and retrieve my caller */ - int msg=*(int*)payload; + int msg = *(int *) payload; gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx); /* 2. Retrieve the father's state (globals) */ - father_data_t *globals=(father_data_t*)gras_userdata_get(); + father_data_t *globals = (father_data_t *) gras_userdata_get(); globals->msg_got++; - + /* 3. Log which client connected */ - INFO3("Kid %s:%d pinged me with %d", - gras_socket_peer_name(expeditor), gras_socket_peer_port(expeditor),msg); - + INFO3("Kid %s:%d pinged me with %d", + gras_socket_peer_name(expeditor), gras_socket_peer_port(expeditor), + msg); + /* 4. Change the value of the msg variable */ msg = 4321; /* 5. Send it back as payload of a pong message to the expeditor */ TRY { gras_msg_send(expeditor, "pong", &msg); - /* 6. Deal with errors: add some details to the exception */ + /* 6. Deal with errors: add some details to the exception */ } CATCH(e) { gras_socket_close(globals->sock); RETHROW0("Unable to answer to my poor child: %s"); } INFO2("Answered to %s:%d's request", - gras_socket_peer_name(expeditor), gras_socket_peer_port(expeditor)); - + gras_socket_peer_name(expeditor), + gras_socket_peer_port(expeditor)); + /* 7. Tell GRAS that we consummed this message */ return 0; -} /* end_of_father_cb_ping_handler */ +} /* end_of_father_cb_ping_handler */ -int father (int argc,char *argv[]) { +int father(int argc, char *argv[]) +{ father_data_t *globals; int port = 4000; int child_amount = 5; char **child_args; int i; - + /* 1. Init the GRAS infrastructure and declare my globals */ - gras_init(&argc,argv); - globals=gras_userdata_new(father_data_t); - + gras_init(&argc, argv); + globals = gras_userdata_new(father_data_t); + /* 2. Get args from the command line, if specified */ if (argc == 2) { - port=atoi(argv[1]); - child_amount=atoi(argv[2]); + port = atoi(argv[1]); + child_amount = atoi(argv[2]); } /* 3. Initialize my globals (mainly create my master socket) */ globals->sock = gras_socket_server(port); - globals->msg_got = 0; - + globals->msg_got = 0; + /* 4. Register the known messages. */ spawn_register_messages(); - + /* 5. Register my callback */ - gras_cb_register("ping",&father_cb_ping_handler); + gras_cb_register("ping", &father_cb_ping_handler); - /* 6. Spawn the kids */ + /* 6. Spawn the kids */ INFO0("Spawn the kids"); - for (i=0; imsg_got < child_amount) - gras_msg_handle(60.0); + gras_msg_handle(60.0); INFO0("All kids gone. Leave now."); - + /* 8. Free the allocated resources, and shut GRAS down */ gras_socket_close(globals->sock); free(globals); gras_exit(); - + return 0; -} /* end_of_father */ +} /* end_of_father */