comparison 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
comparison
equal deleted inserted replaced
1133:382e162c074c 1134:ba9fd42284d0
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, type); 59 std::string uuid = GetStorageArea().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(), type); 78 uuid = GetStorageArea().Create(&compressed[0], compressed.size(), type);
79 } 79 }
80 else 80 else
81 { 81 {
82 uuid = storage_.Create(NULL, 0, type); 82 uuid = GetStorageArea().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 }
89 default: 89 default:
90 throw OrthancException(ErrorCode_NotImplemented); 90 throw OrthancException(ErrorCode_NotImplemented);
91 } 91 }
92 } 92 }
93 93
94
95 CompressedFileStorageAccessor::CompressedFileStorageAccessor() :
96 storage_(NULL),
97 compressionType_(CompressionType_None)
98 {
99 }
100
101
94 CompressedFileStorageAccessor::CompressedFileStorageAccessor(IStorageArea& storage) : 102 CompressedFileStorageAccessor::CompressedFileStorageAccessor(IStorageArea& storage) :
95 storage_(storage) 103 storage_(&storage),
104 compressionType_(CompressionType_None)
96 { 105 {
97 compressionType_ = CompressionType_None;
98 } 106 }
107
108
109 IStorageArea& CompressedFileStorageAccessor::GetStorageArea()
110 {
111 if (storage_ == NULL)
112 {
113 throw OrthancException(ErrorCode_BadSequenceOfCalls);
114 }
115
116 return *storage_;
117 }
118
99 119
100 void CompressedFileStorageAccessor::Read(std::string& content, 120 void CompressedFileStorageAccessor::Read(std::string& content,
101 const std::string& uuid, 121 const std::string& uuid,
102 FileContentType type) 122 FileContentType type)
103 { 123 {
104 switch (compressionType_) 124 switch (compressionType_)
105 { 125 {
106 case CompressionType_None: 126 case CompressionType_None:
107 storage_.Read(content, uuid, type); 127 GetStorageArea().Read(content, uuid, type);
108 break; 128 break;
109 129
110 case CompressionType_Zlib: 130 case CompressionType_Zlib:
111 { 131 {
112 std::string compressed; 132 std::string compressed;
113 storage_.Read(compressed, uuid, type); 133 GetStorageArea().Read(compressed, uuid, type);
114 zlib_.Uncompress(content, compressed); 134 zlib_.Uncompress(content, compressed);
115 break; 135 break;
116 } 136 }
117 137
118 default: 138 default:
125 { 145 {
126 switch (compressionType_) 146 switch (compressionType_)
127 { 147 {
128 case CompressionType_None: 148 case CompressionType_None:
129 { 149 {
130 FileStorageAccessor uncompressedAccessor(storage_); 150 FileStorageAccessor uncompressedAccessor(GetStorageArea());
131 return uncompressedAccessor.ConstructHttpFileSender(uuid, type); 151 return uncompressedAccessor.ConstructHttpFileSender(uuid, type);
132 } 152 }
133 153
134 case CompressionType_Zlib: 154 case CompressionType_Zlib:
135 { 155 {
136 std::string compressed; 156 std::string compressed;
137 storage_.Read(compressed, uuid, type); 157 GetStorageArea().Read(compressed, uuid, type);
138 158
139 std::auto_ptr<BufferHttpSender> sender(new BufferHttpSender); 159 std::auto_ptr<BufferHttpSender> sender(new BufferHttpSender);
140 zlib_.Uncompress(sender->GetBuffer(), compressed); 160 zlib_.Uncompress(sender->GetBuffer(), compressed);
141 161
142 return sender.release(); 162 return sender.release();
144 164
145 default: 165 default:
146 throw OrthancException(ErrorCode_NotImplemented); 166 throw OrthancException(ErrorCode_NotImplemented);
147 } 167 }
148 } 168 }
169
170
171 void CompressedFileStorageAccessor::Remove(const std::string& uuid,
172 FileContentType type)
173 {
174 GetStorageArea().Remove(uuid, type);
175 }
149 } 176 }