MCPcopy Create free account
hub / github.com/apache/nifi-minifi-cpp / processFlowFile

Method processFlowFile

extensions/libarchive/CompressContent.cpp:128–212  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126}
127
128void CompressContent::processFlowFile(const std::shared_ptr<core::FlowFile>& flowFile, const std::shared_ptr<core::ProcessSession>& session) {
129 session->remove(flowFile);
130
131 CompressionFormat compressFormat;
132 if (compressFormat_ == ExtendedCompressionFormat::USE_MIME_TYPE) {
133 std::string attr;
134 flowFile->getAttribute(core::SpecialFlowAttribute::MIME_TYPE, attr);
135 if (attr.empty()) {
136 logger_->log_error("No %s attribute existed for the flow, route to failure", core::SpecialFlowAttribute::MIME_TYPE);
137 session->transfer(flowFile, Failure);
138 return;
139 }
140 auto search = compressionFormatMimeTypeMap_.find(attr);
141 if (search != compressionFormatMimeTypeMap_.end()) {
142 compressFormat = search->second;
143 } else {
144 logger_->log_info("Mime type of %s is not indicated a support format, route to success", attr);
145 session->transfer(flowFile, Success);
146 return;
147 }
148 } else {
149 compressFormat = compressFormat_.cast<CompressionFormat>();
150 }
151 std::string mimeType = toMimeType(compressFormat);
152
153 // Validate
154 if (!encapsulateInTar_ && compressFormat != CompressionFormat::GZIP) {
155 logger_->log_error("non-TAR encapsulated format only supports GZIP compression");
156 session->transfer(flowFile, Failure);
157 return;
158 }
159 if (compressFormat == CompressionFormat::BZIP2 && archive_bzlib_version() == nullptr) {
160 logger_->log_error("%s compression format is requested, but the agent was compiled without BZip2 support", compressFormat.toString());
161 session->transfer(flowFile, Failure);
162 return;
163 }
164 if ((compressFormat == CompressionFormat::LZMA || compressFormat == CompressionFormat::XZ_LZMA2) && archive_liblzma_version() == nullptr) {
165 logger_->log_error("%s compression format is requested, but the agent was compiled without LZMA support ", compressFormat.toString());
166 session->transfer(flowFile, Failure);
167 return;
168 }
169
170 std::string fileExtension;
171 auto search = fileExtension_.find(compressFormat);
172 if (search != fileExtension_.end()) {
173 fileExtension = search->second;
174 }
175 std::shared_ptr<core::FlowFile> result = session->create(flowFile);
176 bool success = false;
177 if (encapsulateInTar_) {
178 CompressContent::WriteCallback callback(compressMode_, compressLevel_, compressFormat, flowFile, session);
179 session->write(result, &callback);
180 success = callback.status_ >= 0;
181 } else {
182 CompressContent::GzipWriteCallback callback(compressMode_, compressLevel_, flowFile, session);
183 session->write(result, &callback);
184 success = callback.success_;
185 }

Callers

nothing calls this directly

Calls 15

log_errorMethod · 0.80
log_infoMethod · 0.80
log_debugMethod · 0.80
removeMethod · 0.45
getAttributeMethod · 0.45
emptyMethod · 0.45
transferMethod · 0.45
findMethod · 0.45
endMethod · 0.45
toStringMethod · 0.45
createMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected