//
// Copyright © 2019 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//

#pragma once

#include "IConsumer.hpp"
#include "IPacketBuffer.hpp"

#include <memory>

#define MAX_METADATA_PACKET_LENGTH 4096

namespace armnn
{

namespace profiling
{

class IBufferManager
{
public:
    virtual ~IBufferManager() {}

    virtual IPacketBufferPtr Reserve(unsigned int requestedSize, unsigned int& reservedSize) = 0;

    virtual void Commit(IPacketBufferPtr& packetBuffer, unsigned int size, bool notifyConsumer = true) = 0;

    virtual void Release(IPacketBufferPtr& packetBuffer) = 0;

    virtual IPacketBufferPtr GetReadableBuffer() = 0;

    virtual void MarkRead(IPacketBufferPtr& packetBuffer) = 0;

    virtual void SetConsumer(IConsumer* consumer) = 0;

    virtual void FlushReadList() = 0;
};

} // namespace profiling

} // namespace armnn
