Added ping stats output.
This commit is contained in:
parent
a88636ae7e
commit
51639b354a
1 changed files with 22 additions and 5 deletions
27
core/ping.c
27
core/ping.c
|
@ -27,6 +27,8 @@ int ipfs_ping (int argc, char **argv)
|
||||||
char* id = NULL;
|
char* id = NULL;
|
||||||
struct FSRepo* fs_repo = NULL;
|
struct FSRepo* fs_repo = NULL;
|
||||||
char* repo_path = NULL;
|
char* repo_path = NULL;
|
||||||
|
struct timeval time1, time2;
|
||||||
|
int time_us;
|
||||||
|
|
||||||
// sanity check
|
// sanity check
|
||||||
local_node.peerstore = NULL;
|
local_node.peerstore = NULL;
|
||||||
|
@ -58,6 +60,7 @@ int ipfs_ping (int argc, char **argv)
|
||||||
|
|
||||||
if (strstr(argv[2], "Qm") == &argv[2][0]) {
|
if (strstr(argv[2], "Qm") == &argv[2][0]) {
|
||||||
// resolve the peer id
|
// resolve the peer id
|
||||||
|
fprintf (stderr, "Looking up peer %s\n", argv[2]);
|
||||||
peer_to_ping = ipfs_resolver_find_peer(argv[2], &local_node);
|
peer_to_ping = ipfs_resolver_find_peer(argv[2], &local_node);
|
||||||
} else {
|
} else {
|
||||||
// perhaps they passed an IP and port
|
// perhaps they passed an IP and port
|
||||||
|
@ -78,17 +81,31 @@ int ipfs_ping (int argc, char **argv)
|
||||||
if (peer_to_ping == NULL)
|
if (peer_to_ping == NULL)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
if (!local_node.routing->Ping(local_node.routing, peer_to_ping)) {
|
id = malloc(peer_to_ping->id_size + 1);
|
||||||
id = malloc(peer_to_ping->id_size + 1);
|
if (id) {
|
||||||
memcpy(id, peer_to_ping->id, peer_to_ping->id_size);
|
memcpy(id, peer_to_ping->id, peer_to_ping->id_size);
|
||||||
id[peer_to_ping->id_size] = 0;
|
id[peer_to_ping->id_size] = 0;
|
||||||
fprintf(stderr, "Unable to ping %s\n", id);
|
fprintf (stderr, "PING %s.\n", id);
|
||||||
free(id);
|
}
|
||||||
goto exit;
|
|
||||||
|
for (;;) {
|
||||||
|
gettimeofday(&time1, NULL);
|
||||||
|
if (!local_node.routing->Ping(local_node.routing, peer_to_ping)) {
|
||||||
|
fprintf(stderr, "Unable to ping %s\n", id);
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
gettimeofday(&time2, NULL);
|
||||||
|
|
||||||
|
time_us = (time2.tv_sec - time1.tv_sec) * 1000000;
|
||||||
|
time_us += (time2.tv_usec - time1.tv_usec);
|
||||||
|
fprintf (stderr, "Pong received: time=%d.%03d ms\n", time_us / 1000, time_us % 1000);
|
||||||
|
usleep(1000000 - time_us);
|
||||||
}
|
}
|
||||||
|
|
||||||
retVal = 1;
|
retVal = 1;
|
||||||
exit:
|
exit:
|
||||||
|
if (id != NULL)
|
||||||
|
free(id);
|
||||||
if (fs_repo != NULL)
|
if (fs_repo != NULL)
|
||||||
ipfs_repo_fsrepo_free(fs_repo);
|
ipfs_repo_fsrepo_free(fs_repo);
|
||||||
if (local_node.peerstore != NULL)
|
if (local_node.peerstore != NULL)
|
||||||
|
|
Loading…
Reference in a new issue