/* The corresponding connection on which the request was made. */
RPCConnection *connection;
+ /* Timining information for generating statistics about response times. */
+ int64_t time_start;
+
/* Transaction ID of the request, in host byte order. */
uint32_t xid;
void
async_rpc_send_reply(RPCRequest *req, void *result)
{
+ bluesky_time_hires time_end;
+
GString *str = g_string_new("");
XDR xdr_out;
xdr_string_create(&xdr_out, str, XDR_ENCODE);
async_rpc_write(req->connection, str->str, str->len);
g_io_channel_flush(req->connection->channel, NULL);
+ time_end = bluesky_now_hires();
+
+ printf("RPC[%"PRIx32"]: time = %"PRId64" ns\n",
+ req->xid, time_end - req->time_start);
+
/* Clean up. */
g_string_free(str, TRUE);
* and the transport should be closed. */
static gboolean async_rpc_dispatch(RPCConnection *rpc)
{
+ bluesky_time_hires time_start = bluesky_now_hires();
int i;
GString *msg = rpc->msgbuf;
const char *buf = msg->str;
RPCRequest *req = g_new0(RPCRequest, 1);
req->connection = rpc;
+ req->time_start = time_start;
req->xid = xid;
if (ntohl(header->prog) != NFS_PROGRAM) {