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.
|
|
|
|
|
#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;
|
|
|
|
|
|
};
|