summaryrefslogtreecommitdiff
path: root/cpp/src/IcePatch2/Client.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2004-11-24 00:11:44 +0000
committerMarc Laukien <marc@zeroc.com>2004-11-24 00:11:44 +0000
commitf7d4889cca46e17167e3f46b1ef40b90ea1f0d99 (patch)
tree114bc1b8e385bf4b16555c0a11475f76f18f27e5 /cpp/src/IcePatch2/Client.cpp
parentCleaned up compression code. (diff)
downloadice-f7d4889cca46e17167e3f46b1ef40b90ea1f0d99.tar.bz2
ice-f7d4889cca46e17167e3f46b1ef40b90ea1f0d99.tar.xz
ice-f7d4889cca46e17167e3f46b1ef40b90ea1f0d99.zip
more IcePatch2
Diffstat (limited to 'cpp/src/IcePatch2/Client.cpp')
-rw-r--r--cpp/src/IcePatch2/Client.cpp72
1 files changed, 38 insertions, 34 deletions
diff --git a/cpp/src/IcePatch2/Client.cpp b/cpp/src/IcePatch2/Client.cpp
index 78edbe8d26d..c5627a191d2 100644
--- a/cpp/src/IcePatch2/Client.cpp
+++ b/cpp/src/IcePatch2/Client.cpp
@@ -177,14 +177,19 @@ IcePatch2::Client::run(int argc, char* argv[])
FileTree0 tree0;
getFileTree0(infoSeq, tree0);
-
+
FileInfoSeq removeFiles;
FileInfoSeq updateFiles;
- if(tree0.checksum != fileServer->getChecksum0())
+ ByteSeq empty(20, 0);
+
+ if(tree0.checksum != fileServer->getChecksum())
{
- ByteSeqSeq checksum1Seq = fileServer->getChecksum1Seq();
- if(checksum1Seq.size() != 256)
+ string progress = "0%";
+ cout << "Getting list of files to patch: " << progress << flush;
+
+ ByteSeqSeq checksum0Seq = fileServer->getChecksum0Seq();
+ if(checksum0Seq.size() != 256)
{
cerr << argv[0] << ": server returned illegal value" << endl;
return EXIT_FAILURE;
@@ -192,41 +197,40 @@ IcePatch2::Client::run(int argc, char* argv[])
for(int node0 = 0; node0 < 256; ++node0)
{
- if(tree0.nodes[node0].checksum != checksum1Seq[node0])
+ if(tree0.nodes[node0].checksum != checksum0Seq[node0])
{
- ByteSeqSeq checksum2Seq = fileServer->getChecksum2Seq(node0);
- if(checksum2Seq.size() != 256)
- {
- cerr << argv[0] << ": server returned illegal value" << endl;
- return EXIT_FAILURE;
- }
-
- for(int node1 = 0; node1 < 256; ++node1)
- {
- if(tree0.nodes[node0].nodes[node1].checksum != checksum2Seq[node1])
- {
- FileInfoSeq fileSeq = fileServer->getFileInfoSeq(node0, node1);
- sort(fileSeq.begin(), fileSeq.end(), FileInfoCompare());
-
- set_difference(tree0.nodes[node0].nodes[node1].files.begin(),
- tree0.nodes[node0].nodes[node1].files.end(),
- fileSeq.begin(),
- fileSeq.end(),
- back_inserter(removeFiles),
- FileInfoCompare());
-
- set_difference(fileSeq.begin(),
- fileSeq.end(),
- tree0.nodes[node0].nodes[node1].files.begin(),
- tree0.nodes[node0].nodes[node1].files.end(),
- back_inserter(updateFiles),
- FileInfoCompare());
- }
- }
+ FileInfoSeq fileSeq = fileServer->getFileInfo1Seq(node0);
+
+ sort(fileSeq.begin(), fileSeq.end(), FileInfoCompare());
+
+ set_difference(tree0.nodes[node0].files.begin(),
+ tree0.nodes[node0].files.end(),
+ fileSeq.begin(),
+ fileSeq.end(),
+ back_inserter(removeFiles),
+ FileInfoCompare());
+
+ set_difference(fileSeq.begin(),
+ fileSeq.end(),
+ tree0.nodes[node0].files.begin(),
+ tree0.nodes[node0].files.end(),
+ back_inserter(updateFiles),
+ FileInfoCompare());
+ }
+
+ for(unsigned int i = 0; i < progress.size(); ++i)
+ {
+ cout << '\b';
}
+ ostringstream s;
+ s << (node0 + 1) * 100 / 256 << '%';
+ progress = s.str();
+ cout << progress << flush;
}
}
+ cout << endl;
+
sort(removeFiles.begin(), removeFiles.end(), FileInfoCompare());
sort(updateFiles.begin(), updateFiles.end(), FileInfoCompare());