Implement a string_printf utility function.
[cumulus.git] / store.cc
index 772f9c5..31ff40f 100644 (file)
--- a/store.cc
+++ b/store.cc
@@ -244,7 +244,9 @@ ObjectReference TarSegmentStore::write_object(const char *data, size_t len,
         segment->basename += filter_extension;
         segment->count = 0;
         segment->data_size = 0;
-        segment->rf = remote->alloc_file(segment->basename, "segments");
+        segment->rf = remote->alloc_file(segment->basename,
+                                         group == "metadata" ? "segments0"
+                                                             : "segments1");
         segment->file = new Tarfile(segment->rf, segment->name);
 
         segments[group] = segment;
@@ -307,14 +309,11 @@ void TarSegmentStore::close_segment(const string &group)
             group_sizes[segment->group].second += disk_size;
         }
 
-        SHA1Checksum segment_checksum;
-        string checksum;
-        if (segment_checksum.process_file(segment->rf->get_local_path().c_str())) {
-            checksum = segment_checksum.checksum_str();
-        }
+        string checksum
+            = Hash::hash_file(segment->rf->get_local_path().c_str());
 
-        db->SetSegmentChecksum(segment->name, segment->basename, checksum,
-                               segment->data_size, disk_size);
+        db->SetSegmentMetadata(segment->name, segment->rf->get_remote_path(),
+                               checksum, group, segment->data_size, disk_size);
     }
 
     segment->rf->send();