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();