blob: 6aec43f643f3860f04de30a11d2e71dca3754bc7 [file] [log] [blame]
Narumol Prangnawarat404b2752019-09-24 17:23:16 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Sadik Armagan3896b472020-02-10 12:24:15 +00008#include "IConsumer.hpp"
Narumol Prangnawarat404b2752019-09-24 17:23:16 +01009#include "IPacketBuffer.hpp"
10
11#include <memory>
12
Sadik Armagan7bbdf9d2019-10-24 10:26:05 +010013#define MAX_METADATA_PACKET_LENGTH 4096
14
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000015namespace arm
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010016{
17
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000018namespace pipe
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010019{
20
21class IBufferManager
22{
23public:
Matteo Martincigh61d6f732019-10-03 11:21:18 +010024 virtual ~IBufferManager() {}
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010025
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000026 virtual IPacketBufferPtr Reserve(unsigned int requestedSize, unsigned int& reservedSize) = 0;
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010027
Sadik Armagan3896b472020-02-10 12:24:15 +000028 virtual void Commit(IPacketBufferPtr& packetBuffer, unsigned int size, bool notifyConsumer = true) = 0;
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010029
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000030 virtual void Release(IPacketBufferPtr& packetBuffer) = 0;
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010031
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000032 virtual IPacketBufferPtr GetReadableBuffer() = 0;
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010033
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000034 virtual void MarkRead(IPacketBufferPtr& packetBuffer) = 0;
Sadik Armagan3896b472020-02-10 12:24:15 +000035
36 virtual void SetConsumer(IConsumer* consumer) = 0;
37
38 virtual void FlushReadList() = 0;
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010039};
40
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000041} // namespace pipe
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010042
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000043} // namespace arm