<commit_before>/*
 * Copyright 2014-2019 Real Logic Ltd.
 *
 * Licensed 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 AERON_LOG_BUFFERS_H
#define AERON_LOG_BUFFERS_H

#include <memory>
#include <vector>

#include <util/MemoryMappedFile.h>
#include <concurrent/logbuffer/LogBufferDescriptor.h>

namespace aeron {

using namespace aeron::util;
using namespace aeron::concurrent;
using namespace aeron::concurrent::logbuffer;

class LogBuffers
{
public:
    explicit LogBuffers(const char *filename, bool preTouch = false);
    LogBuffers(std::uint8_t *address, std::int64_t logLength, std::int32_t termLength);

    ~LogBuffers();

    inline AtomicBuffer& atomicBuffer(int index)
    {
        return m_buffers[index];
    }

private:
    MemoryMappedFile::ptr_t m_memoryMappedFiles;
    AtomicBuffer m_buffers[LogBufferDescriptor::PARTITION_COUNT + 1];
};

}

#endif
<commit_msg>[C++] Pre-touch on log buffers does not require a default.<commit_after>/*
 * Copyright 2014-2019 Real Logic Ltd.
 *
 * Licensed 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 AERON_LOG_BUFFERS_H
#define AERON_LOG_BUFFERS_H

#include <memory>
#include <vector>

#include <util/MemoryMappedFile.h>
#include <concurrent/logbuffer/LogBufferDescriptor.h>

namespace aeron {

using namespace aeron::util;
using namespace aeron::concurrent;
using namespace aeron::concurrent::logbuffer;

class LogBuffers
{
public:
    explicit LogBuffers(const char *filename, bool preTouch);
    LogBuffers(std::uint8_t *address, std::int64_t logLength, std::int32_t termLength);

    ~LogBuffers();

    inline AtomicBuffer& atomicBuffer(int index)
    {
        return m_buffers[index];
    }

private:
    MemoryMappedFile::ptr_t m_memoryMappedFiles;
    AtomicBuffer m_buffers[LogBufferDescriptor::PARTITION_COUNT + 1];
};

}

#endif

{'fraction_non_alphanumeric': 0.08941930887068045, 'fraction_numerical': 0.01282508015675098, 'mean_word_length': 4.616, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3614650', 'n_tokens_mistral': 852, 'n_tokens_neox': 822, 'n_words': 282}