static void register_messages(void)
{
gras_msgtype_declare_rpc("plain ping",
- gras_datadesc_by_name("int"),
- gras_datadesc_by_name("int"));
+ xbt_datadesc_by_name("int"),
+ xbt_datadesc_by_name("int"));
gras_msgtype_declare_rpc("raise exception", NULL, NULL);
gras_msgtype_declare_rpc("forward exception", NULL, NULL);
int client(int argc, char *argv[]);
#define exception_msg "Error for the client"
-#define exception_raising() THROW0(unknown_error,42,exception_msg)
+#define exception_raising() THROWF(unknown_error,42,exception_msg)
static void exception_catching(void)
{
}
CATCH(e) {
gotit = 1;
+ xbt_assert(e.category == unknown_error,
+ "Got wrong category: %d (instead of %d)", e.category,
+ unknown_error);
+ xbt_assert(e.value == 42, "Got wrong value: %d (!=42)", e.value);
+ xbt_assert(!strncmp(e.msg, exception_msg, strlen(exception_msg)),
+ "Got wrong message: %s", e.msg);
+ xbt_ex_free(e);
}
if (!gotit) {
- THROW0(unknown_error, 0, "Didn't got the remote exception!");
+ THROWF(unknown_error, 0, "Didn't got the remote exception!");
}
- xbt_assert2(e.category == unknown_error,
- "Got wrong category: %d (instead of %d)", e.category,
- unknown_error);
- xbt_assert1(e.value == 42, "Got wrong value: %d (!=42)", e.value);
- xbt_assert1(!strncmp(e.msg, exception_msg, strlen(exception_msg)),
- "Got wrong message: %s", e.msg);
- xbt_ex_free(e);
}
}
* Client code
* **********************************************************************/
+static void client_create_sockets(xbt_socket_t *toserver,
+ xbt_socket_t *toforwarder,
+ const char *srv_host, int srv_port,
+ const char *fwd_host, int fwd_port)
+{
+ TRY {
+ exception_catching();
+ *toserver = gras_socket_client(srv_host, srv_port);
+ *toforwarder = gras_socket_client(fwd_host, fwd_port);
+ }
+ CATCH_ANONYMOUS {
+ RETHROWF("Unable to connect to the server: %s");
+ }
+}
int client(int argc, char *argv[])
{
xbt_ex_t e;
- gras_socket_t toserver = NULL; /* peer */
- gras_socket_t toforwarder = NULL; /* peer */
+ xbt_socket_t toserver = NULL; /* peer */
+ xbt_socket_t toforwarder = NULL; /* peer */
int ping, pong, i;
volatile int gotit = 0;
gras_os_sleep(2);
/* 4. Create a socket to speak to the server */
- TRY {
- exception_catching();
- toserver = gras_socket_client(host, port);
- toforwarder = gras_socket_client(argv[3], atoi(argv[4]));
- }
- CATCH(e) {
- RETHROW0("Unable to connect to the server: %s");
- }
+ client_create_sockets(&toserver, &toforwarder,
+ host, port, argv[3], atoi(argv[4]));
XBT_INFO("Connected to %s:%d.", host, port);
/* 6. Keep the user informed of what's going on */
XBT_INFO("Connected to server which is on %s:%d",
- gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
+ xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver));
/* 7. Prepare and send the ping message to the server */
ping = 1234;
exception_catching();
gras_msg_rpccall(toserver, 6000.0, "plain ping", &ping, &pong);
}
- CATCH(e) {
+ CATCH_ANONYMOUS {
gras_socket_close(toserver);
- RETHROW0("Failed to execute a PING rpc on the server: %s");
+ RETHROWF("Failed to execute a PING rpc on the server: %s");
}
exception_catching();
/* 8. Keep the user informed of what's going on, again */
XBT_INFO("The answer to PING(%d) on %s:%d is PONG(%d)",
ping,
- gras_socket_peer_name(toserver), gras_socket_peer_port(toserver),
+ xbt_socket_peer_name(toserver), xbt_socket_peer_port(toserver),
pong);
/* 9. Call a RPC which raises an exception (to test exception propagation) */
}
CATCH(e) {
gotit = 1;
- xbt_assert2(e.category == unknown_error,
+ xbt_assert(e.category == unknown_error,
"Got wrong category: %d (instead of %d)",
e.category, unknown_error);
- xbt_assert1(e.value == 42, "Got wrong value: %d (!=42)", e.value);
- xbt_assert1(!strncmp(e.msg, exception_msg, strlen(exception_msg)),
+ xbt_assert(e.value == 42, "Got wrong value: %d (!=42)", e.value);
+ xbt_assert(!strncmp(e.msg, exception_msg, strlen(exception_msg)),
"Got wrong message: %s", e.msg);
XBT_INFO
("Got the expected exception when calling the exception raising RPC");
}
if (!gotit)
- THROW0(unknown_error, 0, "Didn't got the remote exception!");
+ THROWF(unknown_error, 0, "Didn't got the remote exception!");
XBT_INFO("Called the exception raising RPC");
exception_catching();
xbt_ex_free(e);
}
if (!gotit) {
- THROW0(unknown_error, 0, "Didn't got the remote exception!");
+ THROWF(unknown_error, 0, "Didn't got the remote exception!");
}
}
/* doxygen_resume */
}
CATCH(e) {
gotit = 1;
+ xbt_assert(e.value == 42, "Got wrong value: %d (!=42)", e.value);
+ xbt_assert(!strncmp(e.msg, exception_msg, strlen(exception_msg)),
+ "Got wrong message: %s", e.msg);
+ xbt_assert(e.category == unknown_error,
+ "Got wrong category: %d (instead of %d)",
+ e.category, unknown_error);
+ XBT_INFO
+ ("Got the expected exception when calling the exception raising RPC");
+ xbt_ex_free(e);
}
if (!gotit) {
- THROW0(unknown_error, 0, "Didn't got the remote exception!");
+ THROWF(unknown_error, 0, "Didn't got the remote exception!");
}
- xbt_assert1(e.value == 42, "Got wrong value: %d (!=42)", e.value);
- xbt_assert1(!strncmp(e.msg, exception_msg, strlen(exception_msg)),
- "Got wrong message: %s", e.msg);
- xbt_assert2(e.category == unknown_error,
- "Got wrong category: %d (instead of %d)",
- e.category, unknown_error);
- XBT_INFO
- ("Got the expected exception when calling the exception raising RPC");
- xbt_ex_free(e);
exception_catching();
}
- XBT_INFO("Ask %s:%d to die", gras_socket_peer_name(toforwarder),
- gras_socket_peer_port(toforwarder));
+ XBT_INFO("Ask %s:%d to die", xbt_socket_peer_name(toforwarder),
+ xbt_socket_peer_port(toforwarder));
gras_msg_send(toforwarder, "kill", NULL);
- XBT_INFO("Ask %s:%d to die", gras_socket_peer_name(toserver),
- gras_socket_peer_port(toserver));
+ XBT_INFO("Ask %s:%d to die", xbt_socket_peer_name(toserver),
+ xbt_socket_peer_port(toserver));
gras_msg_send(toserver, "kill", NULL);
/* 11. Cleanup the place before leaving */
* Forwarder code
* **********************************************************************/
typedef struct {
- gras_socket_t server;
+ xbt_socket_t server;
int done;
} s_forward_data_t, *forward_data_t;
static int forwarder_cb_kill(gras_msg_cb_ctx_t ctx, void *payload_data)
{
forward_data_t fdata;
- gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
- XBT_INFO("Asked to die by %s:%d", gras_socket_peer_name(expeditor),
- gras_socket_peer_port(expeditor));
+ xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+ XBT_INFO("Asked to die by %s:%d", xbt_socket_peer_name(expeditor),
+ xbt_socket_peer_port(expeditor));
fdata = gras_userdata_get();
fdata->done = 1;
return 0;
int forwarder(int argc, char *argv[])
{
- gras_socket_t mysock;
+ xbt_socket_t mysock;
int port;
forward_data_t fdata;
* Server code
* **********************************************************************/
typedef struct {
- gras_socket_t server;
+ xbt_socket_t server;
int done;
} s_server_data_t, *server_data_t;
static int server_cb_kill(gras_msg_cb_ctx_t ctx, void *payload_data)
{
- gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+ xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
server_data_t sdata;
- XBT_INFO("Asked to die by %s:%d", gras_socket_peer_name(expeditor),
- gras_socket_peer_port(expeditor));
+ XBT_INFO("Asked to die by %s:%d", xbt_socket_peer_name(expeditor),
+ xbt_socket_peer_port(expeditor));
sdata = gras_userdata_get();
sdata->done = 1;
/* 1. Get the payload into the msg variable, and retrieve who called us */
int msg = *(int *) payload_data;
- gras_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
+ xbt_socket_t expeditor = gras_msg_cb_ctx_from(ctx);
/* 2. Log which client connected */
XBT_INFO("Got message PING(%d) from %s:%d",
msg,
- gras_socket_peer_name(expeditor),
- gras_socket_peer_port(expeditor));
+ xbt_socket_peer_name(expeditor),
+ xbt_socket_peer_port(expeditor));
/* 4. Change the value of the msg variable */
msg = 4321;
int server(int argc, char *argv[])
{
- gras_socket_t mysock;
+ xbt_socket_t mysock;
server_data_t sdata;
int port = 4001;
gras_cb_register("raise exception", &server_cb_raise_ex);
gras_cb_register("kill", &server_cb_kill);
- XBT_INFO("Listening on port %d", gras_socket_my_port(mysock));
+ XBT_INFO("Listening on port %d", xbt_socket_my_port(mysock));
- /* 5. Wait for the ping incomming messages */
+ /* 5. Wait for the ping incoming messages */
/** \bug if the server is gone before the forwarder tries to connect,
it dies awfully with the following message. The problem stands somewhere
- at the interface between the gras_socket_t and the msg mess. There is thus
+ at the interface between the xbt_socket_t and the msg mess. There is thus
no way for me to dive into this before this interface is rewritten
==15875== Invalid read of size 4
==15875== at 0x408B805: find_port (transport_plugin_sg.c:68)