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

Public Member Functions

 ByteBufferPart (const void *data, size_t size)
 
int64_t GetSize () const override
 
size_t GetOffset () const override
 
size_t Read (void *buffer, size_t maxBytes) override
 
bool Seek (int64_t offset, int origin) override
 
- Public Member Functions inherited from audacity::network_manager::MultipartData::Part
virtual ~Part ()=default
 
void SetHeader (const std::string &headerName, const std::string &headerValue)
 
void SetContentType (const std::string &mimeType)
 
void SetContentDisposition (const std::string &disposition)
 
virtual int64_t GetSize () const =0
 
virtual size_t GetOffset () const =0
 
virtual size_t Read (void *buffer, size_t maxBytes)=0
 
virtual bool Seek (int64_t offset, int origin=SEEK_SET)=0
 
const HeadersListGetHeaders () const
 

Private Attributes

std::vector< uint8_t > mData
 
size_t mOffset { 0 }
 

Detailed Description

Definition at line 23 of file MultipartData.cpp.

Constructor & Destructor Documentation

◆ ByteBufferPart()

audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::ByteBufferPart ( const void *  data,
size_t  size 
)
inline

Definition at line 26 of file MultipartData.cpp.

27 {
28 mData.resize(size);
29 std::memcpy(mData.data(), data, size);
30 }

References size.

Member Function Documentation

◆ GetOffset()

size_t audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::GetOffset ( ) const
inlineoverridevirtual

◆ GetSize()

int64_t audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::GetSize ( ) const
inlineoverridevirtual

Implements audacity::network_manager::MultipartData::Part.

Definition at line 32 of file MultipartData.cpp.

33 {
34 return static_cast<int64_t>(mData.size());
35 }

◆ Read()

size_t audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::Read ( void *  buffer,
size_t  maxBytes 
)
inlineoverridevirtual

Implements audacity::network_manager::MultipartData::Part.

Definition at line 42 of file MultipartData.cpp.

43 {
44 const size_t availableBytes = mData.size() - mOffset;
45
46 maxBytes = std::min(maxBytes, availableBytes);
47
48 std::memcpy(buffer, mData.data() + mOffset, maxBytes);
49
50 mOffset += maxBytes;
51
52 return maxBytes;
53 }
int min(int a, int b)

References min().

Here is the call graph for this function:

◆ Seek()

bool audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::Seek ( int64_t  offset,
int  origin 
)
inlineoverridevirtual

Implements audacity::network_manager::MultipartData::Part.

Definition at line 55 of file MultipartData.cpp.

56 {
57 switch (origin)
58 {
59 case SEEK_SET:
60 if (offset <= GetSize())
61 {
62 mOffset = offset;
63 return true;
64 }
65 break;
66 case SEEK_CUR:
67 {
68 const int64_t targetOffset = offset + mOffset;
69
70 if (targetOffset >= 0 && targetOffset < GetSize())
71 {
72 mOffset = targetOffset;
73 return true;
74 }
75 }
76 break;
77 case SEEK_END:
78 {
79 const int64_t targetOffset = GetSize() + offset;
80
81 if (targetOffset >= 0 && targetOffset < GetSize())
82 {
83 mOffset = targetOffset;
84 return true;
85 }
86 }
87 break;
88 default:
89 break;
90 }
91
92 return false;
93 }

Member Data Documentation

◆ mData

std::vector<uint8_t> audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::mData
private

Definition at line 96 of file MultipartData.cpp.

◆ mOffset

size_t audacity::network_manager::anonymous_namespace{MultipartData.cpp}::ByteBufferPart::mOffset { 0 }
private

Definition at line 97 of file MultipartData.cpp.


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