Mercurial > hg > orthanc
comparison Core/FileStorage/CompressedFileStorageAccessor.cpp @ 1126:bf67431a7383
handling of file content type in IStorageArea
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 05 Sep 2014 17:01:42 +0200 |
parents | 790ff7a5b3bf |
children | ba9fd42284d0 |
comparison
equal
deleted
inserted
replaced
1125:20ddab7e9ae8 | 1126:bf67431a7383 |
---|---|
54 | 54 |
55 switch (compressionType_) | 55 switch (compressionType_) |
56 { | 56 { |
57 case CompressionType_None: | 57 case CompressionType_None: |
58 { | 58 { |
59 std::string uuid = storage_.Create(data, size); | 59 std::string uuid = storage_.Create(data, size, type); |
60 return FileInfo(uuid, type, size, md5); | 60 return FileInfo(uuid, type, size, md5); |
61 } | 61 } |
62 | 62 |
63 case CompressionType_Zlib: | 63 case CompressionType_Zlib: |
64 { | 64 { |
73 } | 73 } |
74 | 74 |
75 std::string uuid; | 75 std::string uuid; |
76 if (compressed.size() > 0) | 76 if (compressed.size() > 0) |
77 { | 77 { |
78 uuid = storage_.Create(&compressed[0], compressed.size()); | 78 uuid = storage_.Create(&compressed[0], compressed.size(), type); |
79 } | 79 } |
80 else | 80 else |
81 { | 81 { |
82 uuid = storage_.Create(NULL, 0); | 82 uuid = storage_.Create(NULL, 0, type); |
83 } | 83 } |
84 | 84 |
85 return FileInfo(uuid, type, size, md5, | 85 return FileInfo(uuid, type, size, md5, |
86 CompressionType_Zlib, compressed.size(), compressedMD5); | 86 CompressionType_Zlib, compressed.size(), compressedMD5); |
87 } | 87 } |
96 { | 96 { |
97 compressionType_ = CompressionType_None; | 97 compressionType_ = CompressionType_None; |
98 } | 98 } |
99 | 99 |
100 void CompressedFileStorageAccessor::Read(std::string& content, | 100 void CompressedFileStorageAccessor::Read(std::string& content, |
101 const std::string& uuid) | 101 const std::string& uuid, |
102 FileContentType type) | |
102 { | 103 { |
103 switch (compressionType_) | 104 switch (compressionType_) |
104 { | 105 { |
105 case CompressionType_None: | 106 case CompressionType_None: |
106 storage_.Read(content, uuid); | 107 storage_.Read(content, uuid, type); |
107 break; | 108 break; |
108 | 109 |
109 case CompressionType_Zlib: | 110 case CompressionType_Zlib: |
110 { | 111 { |
111 std::string compressed; | 112 std::string compressed; |
112 storage_.Read(compressed, uuid); | 113 storage_.Read(compressed, uuid, type); |
113 zlib_.Uncompress(content, compressed); | 114 zlib_.Uncompress(content, compressed); |
114 break; | 115 break; |
115 } | 116 } |
116 | 117 |
117 default: | 118 default: |
118 throw OrthancException(ErrorCode_NotImplemented); | 119 throw OrthancException(ErrorCode_NotImplemented); |
119 } | 120 } |
120 } | 121 } |
121 | 122 |
122 HttpFileSender* CompressedFileStorageAccessor::ConstructHttpFileSender(const std::string& uuid) | 123 HttpFileSender* CompressedFileStorageAccessor::ConstructHttpFileSender(const std::string& uuid, |
124 FileContentType type) | |
123 { | 125 { |
124 switch (compressionType_) | 126 switch (compressionType_) |
125 { | 127 { |
126 case CompressionType_None: | 128 case CompressionType_None: |
127 { | 129 { |
128 FileStorageAccessor uncompressedAccessor(storage_); | 130 FileStorageAccessor uncompressedAccessor(storage_); |
129 return uncompressedAccessor.ConstructHttpFileSender(uuid); | 131 return uncompressedAccessor.ConstructHttpFileSender(uuid, type); |
130 } | 132 } |
131 | 133 |
132 case CompressionType_Zlib: | 134 case CompressionType_Zlib: |
133 { | 135 { |
134 std::string compressed; | 136 std::string compressed; |
135 storage_.Read(compressed, uuid); | 137 storage_.Read(compressed, uuid, type); |
136 | 138 |
137 std::auto_ptr<BufferHttpSender> sender(new BufferHttpSender); | 139 std::auto_ptr<BufferHttpSender> sender(new BufferHttpSender); |
138 zlib_.Uncompress(sender->GetBuffer(), compressed); | 140 zlib_.Uncompress(sender->GetBuffer(), compressed); |
139 | 141 |
140 return sender.release(); | 142 return sender.release(); |