Mercurial > hg > orthanc
diff Core/FileStorage/CompressedFileStorageAccessor.cpp @ 1134:ba9fd42284d0
preparing storage plugin
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 09 Sep 2014 12:53:49 +0200 |
parents | bf67431a7383 |
children | 67c3c1e4a6e0 |
line wrap: on
line diff
--- a/Core/FileStorage/CompressedFileStorageAccessor.cpp Tue Sep 09 10:45:14 2014 +0200 +++ b/Core/FileStorage/CompressedFileStorageAccessor.cpp Tue Sep 09 12:53:49 2014 +0200 @@ -56,7 +56,7 @@ { case CompressionType_None: { - std::string uuid = storage_.Create(data, size, type); + std::string uuid = GetStorageArea().Create(data, size, type); return FileInfo(uuid, type, size, md5); } @@ -75,11 +75,11 @@ std::string uuid; if (compressed.size() > 0) { - uuid = storage_.Create(&compressed[0], compressed.size(), type); + uuid = GetStorageArea().Create(&compressed[0], compressed.size(), type); } else { - uuid = storage_.Create(NULL, 0, type); + uuid = GetStorageArea().Create(NULL, 0, type); } return FileInfo(uuid, type, size, md5, @@ -91,12 +91,32 @@ } } + + CompressedFileStorageAccessor::CompressedFileStorageAccessor() : + storage_(NULL), + compressionType_(CompressionType_None) + { + } + + CompressedFileStorageAccessor::CompressedFileStorageAccessor(IStorageArea& storage) : - storage_(storage) + storage_(&storage), + compressionType_(CompressionType_None) { - compressionType_ = CompressionType_None; } + + IStorageArea& CompressedFileStorageAccessor::GetStorageArea() + { + if (storage_ == NULL) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + + return *storage_; + } + + void CompressedFileStorageAccessor::Read(std::string& content, const std::string& uuid, FileContentType type) @@ -104,13 +124,13 @@ switch (compressionType_) { case CompressionType_None: - storage_.Read(content, uuid, type); + GetStorageArea().Read(content, uuid, type); break; case CompressionType_Zlib: { std::string compressed; - storage_.Read(compressed, uuid, type); + GetStorageArea().Read(compressed, uuid, type); zlib_.Uncompress(content, compressed); break; } @@ -127,14 +147,14 @@ { case CompressionType_None: { - FileStorageAccessor uncompressedAccessor(storage_); + FileStorageAccessor uncompressedAccessor(GetStorageArea()); return uncompressedAccessor.ConstructHttpFileSender(uuid, type); } case CompressionType_Zlib: { std::string compressed; - storage_.Read(compressed, uuid, type); + GetStorageArea().Read(compressed, uuid, type); std::auto_ptr<BufferHttpSender> sender(new BufferHttpSender); zlib_.Uncompress(sender->GetBuffer(), compressed); @@ -146,4 +166,11 @@ throw OrthancException(ErrorCode_NotImplemented); } } + + + void CompressedFileStorageAccessor::Remove(const std::string& uuid, + FileContentType type) + { + GetStorageArea().Remove(uuid, type); + } }