gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
/* 7. Prepare and send the ping message to the server */
gras_socket_peer_name(toserver), gras_socket_peer_port(toserver));
/* 7. Prepare and send the ping message to the server */
ping,
gras_socket_peer_name(toserver), gras_socket_peer_port(toserver),
pong);
/* 9. Call a RPC which raises an exception (to test exception propagation) */
ping,
gras_socket_peer_name(toserver), gras_socket_peer_port(toserver),
pong);
/* 9. Call a RPC which raises an exception (to test exception propagation) */
TRY {
gras_msg_rpccall(toserver, 6000.0, "raise exception", NULL, NULL);
}
TRY {
gras_msg_rpccall(toserver, 6000.0, "raise exception", NULL, NULL);
}
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_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);
TRY {
gras_msg_rpccall(toserver, 6000.0, "raise exception", NULL, NULL);
}
TRY {
gras_msg_rpccall(toserver, 6000.0, "raise exception", NULL, NULL);
}
/* 9. Call a RPC which raises an exception (to test that exception propagation works) */
for (i = 0; i < 5; i++) {
/* 9. Call a RPC which raises an exception (to test that exception propagation works) */
for (i = 0; i < 5; i++) {
TRY {
gras_msg_rpccall(toforwarder, 6000.0, "forward exception", NULL,
NULL);
TRY {
gras_msg_rpccall(toforwarder, 6000.0, "forward exception", NULL,
NULL);
xbt_assert2(e.category == unknown_error,
"Got wrong category: %d (instead of %d)",
e.category, unknown_error);
xbt_assert2(e.category == unknown_error,
"Got wrong category: %d (instead of %d)",
e.category, unknown_error);
gras_socket_peer_port(toforwarder));
gras_msg_send(toforwarder, "kill", NULL);
gras_socket_peer_port(toforwarder));
gras_msg_send(toforwarder, "kill", NULL);
gras_socket_peer_port(toserver));
gras_msg_send(toserver, "kill", NULL);
/* 11. Cleanup the place before leaving */
gras_socket_close(toserver);
gras_socket_close(toforwarder);
gras_socket_peer_port(toserver));
gras_msg_send(toserver, "kill", NULL);
/* 11. Cleanup the place before leaving */
gras_socket_close(toserver);
gras_socket_close(toforwarder);
gras_msg_rpccall(fdata->server, 60, "raise exception", NULL, NULL);
return 0;
}
gras_msg_rpccall(fdata->server, 60, "raise exception", NULL, NULL);
return 0;
}
msg,
gras_socket_peer_name(expeditor),
gras_socket_peer_port(expeditor));
msg,
gras_socket_peer_name(expeditor),
gras_socket_peer_port(expeditor));
/* 5. Return as result */
gras_msg_rpcreturn(6000, ctx, &msg);
/* 5. Return as result */
gras_msg_rpcreturn(6000, ctx, &msg);
gras_cb_register("raise exception", &server_cb_raise_ex);
gras_cb_register("kill", &server_cb_kill);
gras_cb_register("raise exception", &server_cb_raise_ex);
gras_cb_register("kill", &server_cb_kill);
/* 8. Free the allocated resources, and shut GRAS down */
free(sdata);
gras_socket_close(mysock);
/* 8. Free the allocated resources, and shut GRAS down */
free(sdata);
gras_socket_close(mysock);