You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
812 B
C

1 month ago
#pragma once
#include <string>
enum class StreamError
{
STREAM_OK = 0, // <20>ɹ<EFBFBD>
STREAM_INVALID_HANDLE = 1, // handle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_WRITE_FAILED = 2, // д<><D0B4>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
STREAM_ALREADY_CLOSED = 3, // <20>ѹر<D1B9>
STREAM_UNKNOWN_TYPE = 4 // Open <20><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class INativeStream
{
public:
virtual void Write(const void* data, size_t size) = 0;
virtual void Complete() = 0;
virtual ~INativeStream() {}
};
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۻ<EFBFBD> Write <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>Complete <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> GetContent ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class BufferStream : public INativeStream
{
public:
void Write(const void* data, size_t size) override;
void Complete() override;
const std::string& GetContent() const { return m_buffer; }
private:
std::string m_buffer;
};