summaryrefslogtreecommitdiffstats
path: root/src/server/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ipc.c')
-rw-r--r--src/server/ipc.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/server/ipc.c b/src/server/ipc.c
index ebc907b..37ca36f 100644
--- a/src/server/ipc.c
+++ b/src/server/ipc.c
@@ -364,7 +364,8 @@ static int ipc_receive(int client_sock)
GSList *iterator = NULL;
struct tm *timeinfo;
- char time_buff[64], rid[20], ipaddr[100];
+#define STRBUFLEN 100
+ char strbuffer[STRBUFLEN];
dnbd3_ipc_t header;
@@ -428,18 +429,27 @@ static int ipc_receive(int client_sock)
for (iterator = _dnbd3_images; iterator; iterator = iterator->next)
{
const dnbd3_image_t *image = iterator->data;
- sprintf(rid, "%d", image->rid);
- timeinfo = localtime(&image->atime);
- strftime(time_buff, 64, "%d.%m.%y %H:%M:%S", timeinfo);
tmp_node = xmlNewNode(NULL, BAD_CAST "image");
if (tmp_node == NULL)
goto get_info_reply_cleanup;
xmlNewProp(tmp_node, BAD_CAST "name", BAD_CAST image->config_group);
- xmlNewProp(tmp_node, BAD_CAST "atime", BAD_CAST time_buff);
- xmlNewProp(tmp_node, BAD_CAST "rid", BAD_CAST rid);
+ timeinfo = localtime(&image->atime);
+ strftime(strbuffer, STRBUFLEN, "%d.%m.%y %H:%M:%S", timeinfo);
+ xmlNewProp(tmp_node, BAD_CAST "atime", BAD_CAST strbuffer);
+ sprintf(strbuffer, "%d", image->rid);
+ xmlNewProp(tmp_node, BAD_CAST "rid", BAD_CAST strbuffer);
xmlNewProp(tmp_node, BAD_CAST "file", BAD_CAST image->file);
- xmlNewProp(tmp_node, BAD_CAST "servers", BAD_CAST "???");
- xmlNewProp(tmp_node, BAD_CAST "cache", BAD_CAST image->cache_file);
+ xmlNewProp(tmp_node, BAD_CAST "servers", BAD_CAST "???"); // TODO
+ if (image->cache_file && image->cache_map)
+ {
+ xmlNewProp(tmp_node, BAD_CAST "cachefile", BAD_CAST image->cache_file);
+ int i, complete = 0, size = IMGSIZE_TO_MAPBYTES(image->filesize);
+ for (i = 0; i < size; ++i)
+ if (image->cache_map[i])
+ complete += 100;
+ sprintf(strbuffer, "%d", complete / size);
+ xmlNewProp(tmp_node, BAD_CAST "cachefill", BAD_CAST image->cache_file);
+ }
xmlAddChild(images_node, tmp_node);
}
// Clients
@@ -455,9 +465,9 @@ static int ipc_receive(int client_sock)
tmp_node = xmlNewNode(NULL, BAD_CAST "client");
if (tmp_node == NULL)
goto get_info_reply_cleanup;
- *ipaddr = '\0';
- inet_ntop(client->addrtype, client->ipaddr, ipaddr, 100);
- xmlNewProp(tmp_node, BAD_CAST "ip", BAD_CAST ipaddr);
+ *strbuffer = '\0';
+ inet_ntop(client->addrtype, client->ipaddr, strbuffer, STRBUFLEN);
+ xmlNewProp(tmp_node, BAD_CAST "ip", BAD_CAST strbuffer);
xmlNewProp(tmp_node, BAD_CAST "file", BAD_CAST client->image->file);
xmlAddChild(clients_node, tmp_node);
}