comparison Core/FileStorage/CompressedFileStorageAccessor.cpp @ 1135:67c3c1e4a6e0

index-only mode, and custom storage area with plugins
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 09 Sep 2014 15:55:43 +0200
parents ba9fd42284d0
children d9c27f9f1a51
comparison
equal deleted inserted replaced
1134:ba9fd42284d0 1135:67c3c1e4a6e0
34 #include "CompressedFileStorageAccessor.h" 34 #include "CompressedFileStorageAccessor.h"
35 35
36 #include "../OrthancException.h" 36 #include "../OrthancException.h"
37 #include "FileStorageAccessor.h" 37 #include "FileStorageAccessor.h"
38 #include "../HttpServer/BufferHttpSender.h" 38 #include "../HttpServer/BufferHttpSender.h"
39 #include "../Uuid.h"
39 40
40 #include <memory> 41 #include <memory>
41 42
42 namespace Orthanc 43 namespace Orthanc
43 { 44 {
44 FileInfo CompressedFileStorageAccessor::WriteInternal(const void* data, 45 FileInfo CompressedFileStorageAccessor::WriteInternal(const void* data,
45 size_t size, 46 size_t size,
46 FileContentType type) 47 FileContentType type)
47 { 48 {
49 std::string uuid = Toolbox::GenerateUuid();
50
48 std::string md5; 51 std::string md5;
49 52
50 if (storeMD5_) 53 if (storeMD5_)
51 { 54 {
52 Toolbox::ComputeMD5(md5, data, size); 55 Toolbox::ComputeMD5(md5, data, size);
54 57
55 switch (compressionType_) 58 switch (compressionType_)
56 { 59 {
57 case CompressionType_None: 60 case CompressionType_None:
58 { 61 {
59 std::string uuid = GetStorageArea().Create(data, size, type); 62 GetStorageArea().Create(uuid.c_str(), data, size, type);
60 return FileInfo(uuid, type, size, md5); 63 return FileInfo(uuid, type, size, md5);
61 } 64 }
62 65
63 case CompressionType_Zlib: 66 case CompressionType_Zlib:
64 { 67 {
70 if (storeMD5_) 73 if (storeMD5_)
71 { 74 {
72 Toolbox::ComputeMD5(compressedMD5, compressed); 75 Toolbox::ComputeMD5(compressedMD5, compressed);
73 } 76 }
74 77
75 std::string uuid;
76 if (compressed.size() > 0) 78 if (compressed.size() > 0)
77 { 79 {
78 uuid = GetStorageArea().Create(&compressed[0], compressed.size(), type); 80 GetStorageArea().Create(uuid.c_str(), &compressed[0], compressed.size(), type);
79 } 81 }
80 else 82 else
81 { 83 {
82 uuid = GetStorageArea().Create(NULL, 0, type); 84 GetStorageArea().Create(uuid.c_str(), NULL, 0, type);
83 } 85 }
84 86
85 return FileInfo(uuid, type, size, md5, 87 return FileInfo(uuid, type, size, md5,
86 CompressionType_Zlib, compressed.size(), compressedMD5); 88 CompressionType_Zlib, compressed.size(), compressedMD5);
87 } 89 }