Audacity 3.2.0
Public Member Functions | Private Attributes | List of all members
audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream Class Referencefinal
Inheritance diagram for audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream:
[legend]
Collaboration diagram for audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream:
[legend]

Public Member Functions

 MemoryRequestPayloadStream (const void *data, int64_t size, bool copyData)
 
bool HasData () const override
 return true on if stream is not empty More...
 
int64_t GetDataSize () const override
 May return 0 even if HasData() returns true. More...
 
bool Seek (int64_t offset, SeekDirection direction) override
 returns true on success More...
 
int64_t Read (void *buffer, int64_t size) override
 returns number of bytes read More...
 
- Public Member Functions inherited from audacity::network_manager::RequestPayloadStream
virtual ~RequestPayloadStream ()
 
virtual bool HasData () const =0
 return true on if stream is not empty More...
 
virtual int64_t GetDataSize () const =0
 May return 0 even if HasData() returns true. More...
 
virtual bool Seek (int64_t offset, SeekDirection direction)=0
 returns true on success More...
 
virtual int64_t Read (void *buffer, int64_t size)=0
 returns number of bytes read More...
 

Private Attributes

std::vector< uint8_t > mData
 
const uint8_t * mDataPointer {}
 
int64_t mStreamSize {}
 
int64_t mStreamPosition {}
 

Additional Inherited Members

- Public Types inherited from audacity::network_manager::RequestPayloadStream
enum class  SeekDirection { Start , Current , End }
 

Detailed Description

Definition at line 65 of file RequestPayload.cpp.

Constructor & Destructor Documentation

◆ MemoryRequestPayloadStream()

audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::MemoryRequestPayloadStream ( const void *  data,
int64_t  size,
bool  copyData 
)
inline

Definition at line 68 of file RequestPayload.cpp.

69 : mStreamSize { size }
70 {
71 if (copyData && data != nullptr && mStreamSize > 0)
72 {
73 mData.reserve(size);
74 std::copy_n(static_cast<const uint8_t*>(data), size, std::back_inserter(mData));
75 mDataPointer = mData.data();
76 }
77 else
78 {
79 mDataPointer = static_cast<const uint8_t*>(data);
80 }
81 }

References size.

Member Function Documentation

◆ GetDataSize()

int64_t audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::GetDataSize ( ) const
inlineoverridevirtual

May return 0 even if HasData() returns true.

Implements audacity::network_manager::RequestPayloadStream.

Definition at line 88 of file RequestPayload.cpp.

89 {
90 return mStreamSize;
91 }

◆ HasData()

bool audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::HasData ( ) const
inlineoverridevirtual

return true on if stream is not empty

Implements audacity::network_manager::RequestPayloadStream.

Definition at line 83 of file RequestPayload.cpp.

84 {
85 return mDataPointer != nullptr && mStreamSize > 0;
86 }

◆ Read()

int64_t audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::Read ( void *  buffer,
int64_t  size 
)
inlineoverridevirtual

returns number of bytes read

Implements audacity::network_manager::RequestPayloadStream.

Definition at line 104 of file RequestPayload.cpp.

105 {
106 const auto bytesToRead = std::min(size, mStreamSize - mStreamPosition);
107
108 if (bytesToRead <= 0)
109 return 0;
110
111 std::copy_n(mDataPointer + mStreamPosition, bytesToRead, static_cast<uint8_t*>(buffer));
112 mStreamPosition += bytesToRead;
113
114 return bytesToRead;
115 }
int min(int a, int b)

References min(), and size.

Here is the call graph for this function:

◆ Seek()

bool audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::Seek ( int64_t  offset,
SeekDirection  direction 
)
inlineoverridevirtual

returns true on success

Implements audacity::network_manager::RequestPayloadStream.

Definition at line 93 of file RequestPayload.cpp.

94 {
95 const auto requestedOffset = CalculateOffset(mStreamPosition, offset, mStreamSize, direction);
96
97 if (requestedOffset < 0 || requestedOffset > mStreamSize)
98 return false;
99
100 mStreamPosition = requestedOffset;
101 return true;
102 }
int64_t CalculateOffset(int64_t currentOffset, int64_t offset, int64_t size, RequestPayloadStream::SeekDirection direction)

References audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::CalculateOffset().

Here is the call graph for this function:

Member Data Documentation

◆ mData

std::vector<uint8_t> audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::mData
private

Definition at line 118 of file RequestPayload.cpp.

◆ mDataPointer

const uint8_t* audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::mDataPointer {}
private

Definition at line 120 of file RequestPayload.cpp.

◆ mStreamPosition

int64_t audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::mStreamPosition {}
private

Definition at line 123 of file RequestPayload.cpp.

◆ mStreamSize

int64_t audacity::network_manager::anonymous_namespace{RequestPayload.cpp}::MemoryRequestPayloadStream::mStreamSize {}
private

Definition at line 121 of file RequestPayload.cpp.


The documentation for this class was generated from the following file: