Github user phrocker commented on a diff in the pull request: https://github.com/apache/nifi-minifi-cpp/pull/133#discussion_r137022742 --- Diff: libminifi/include/processors/BinFiles.h --- @@ -0,0 +1,295 @@ +/** + * @file BinFiles.h + * BinFiles class declaration + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __BIN_FILES_H__ +#define __BIN_FILES_H__ + +#include <climits> +#include <deque> +#include <map> +#include "FlowFileRecord.h" +#include "core/Processor.h" +#include "core/ProcessSession.h" +#include "core/Core.h" +#include "core/Resource.h" +#include "core/logging/LoggerConfiguration.h" +#include "utils/Id.h" + +namespace org { +namespace apache { +namespace nifi { +namespace minifi { +namespace processors { + +// Bin Class +class Bin { + public: + // Constructor + /*! + * Create a new Bin + */ + explicit Bin(uint64_t minSize, uint64_t maxSize, int minEntries, int maxEntries, std::string fileCount, std::string groupId) + : minSize_(minSize), maxSize_(maxSize), maxEntries_(maxEntries), minEntries_(minEntries), fileCount_(fileCount), + groupId_(groupId), logger_(logging::LoggerFactory<Bin>::getLogger()) { + queued_data_size_ = 0; + creation_dated_ = getTimeMillis(); + std::shared_ptr<utils::IdGenerator> id_generator = utils::IdGenerator::getIdGenerator(); + char uuidStr[37] = { 0 }; + id_generator->generate(uuid_); + uuid_unparse_lower(uuid_, uuidStr); + uuid_str_ = uuidStr; + logger_->log_info("Bin %s for group %s created", uuid_str_, groupId_); + } + virtual ~Bin() { + logger_->log_info("Bin %s for group %s destroyed", uuid_str_, groupId_); + } + // check whether the bin is full + bool isFull() { + if (queued_data_size_ >= maxSize_ || queue_.size() >= maxEntries_) + return true; + else + return false; + } + // check whether the bin meet the min required size and entries + bool isFullEnough() { --- End diff -- Can we make this clearer? Enough is not very descriptive. I know the Java variant uses this nomenclature, but I think we can do a little better for other developers.
---