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 24 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 27 of file MultipartData.cpp.

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

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 33 of file MultipartData.cpp.

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

◆ 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 43 of file MultipartData.cpp.

44 {
45 const size_t availableBytes = mData.size() - mOffset;
46
47 maxBytes = std::min(maxBytes, availableBytes);
48
49 std::memcpy(buffer, mData.data() + mOffset, maxBytes);
50
51 mOffset += maxBytes;
52
53 return maxBytes;
54 }
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 56 of file MultipartData.cpp.

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

Member Data Documentation

◆ mData

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

Definition at line 97 of file MultipartData.cpp.

◆ mOffset

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

Definition at line 98 of file MultipartData.cpp.


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