Mercurial > hg > orthanc
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 } |