mirror of
https://onedev.site.tesses.net/tesses-framework
synced 2026-02-08 15:55:46 +00:00
Make streams and vfs and http shared_ptr
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
#include "TessesFramework/Streams/BufferedStream.hpp"
|
||||
namespace Tesses::Framework::Streams {
|
||||
BufferedStream::BufferedStream(Stream* strm, bool owns, size_t bufferSize)
|
||||
BufferedStream::BufferedStream(std::shared_ptr<Stream> strm, size_t bufferSize)
|
||||
{
|
||||
this->strm = strm;
|
||||
this->owns = owns;
|
||||
this->bufferSize = bufferSize;
|
||||
this->buffer = new uint8_t[bufferSize];
|
||||
this->read = 0;
|
||||
this->offset = 0;
|
||||
}
|
||||
BufferedStream::BufferedStream(Stream& strm, size_t bufferSize) : BufferedStream(&strm,false, bufferSize)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool BufferedStream::EndOfStream()
|
||||
{
|
||||
if(this->offset < this->read) return false;
|
||||
@@ -60,8 +56,6 @@ namespace Tesses::Framework::Streams {
|
||||
|
||||
BufferedStream::~BufferedStream()
|
||||
{
|
||||
if(this->owns)
|
||||
delete this->strm;
|
||||
delete buffer;
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,15 @@
|
||||
#include "TessesFramework/Streams/ByteReader.hpp"
|
||||
namespace Tesses::Framework::Streams
|
||||
{
|
||||
Stream* ByteReader::GetStream()
|
||||
std::shared_ptr<Stream> ByteReader::GetStream()
|
||||
{
|
||||
return this->strm;
|
||||
}
|
||||
ByteReader::ByteReader(Stream* strm, bool owns)
|
||||
ByteReader::ByteReader(std::shared_ptr<Stream> strm)
|
||||
{
|
||||
this->strm = strm;
|
||||
this->owns = owns;
|
||||
}
|
||||
ByteReader::ByteReader(Stream& strm) : ByteReader(&strm,false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
uint8_t ByteReader::ReadU8()
|
||||
{
|
||||
auto r = this->strm->ReadByte();
|
||||
@@ -153,8 +149,5 @@ namespace Tesses::Framework::Streams
|
||||
auto v=ReadU64LE();
|
||||
return *(double*)&v;
|
||||
}
|
||||
ByteReader::~ByteReader()
|
||||
{
|
||||
if(this->owns) delete this->strm;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,19 +1,15 @@
|
||||
#include "TessesFramework/Streams/ByteWriter.hpp"
|
||||
namespace Tesses::Framework::Streams
|
||||
{
|
||||
Stream* ByteWriter::GetStream()
|
||||
std::shared_ptr<Stream> ByteWriter::GetStream()
|
||||
{
|
||||
return this->strm;
|
||||
}
|
||||
ByteWriter::ByteWriter(Stream* strm, bool owns)
|
||||
ByteWriter::ByteWriter(std::shared_ptr<Stream> strm)
|
||||
{
|
||||
this->strm = strm;
|
||||
this->owns = owns;
|
||||
}
|
||||
ByteWriter::ByteWriter(Stream& strm) : ByteWriter(&strm,false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void ByteWriter::WriteU8(uint8_t v)
|
||||
{
|
||||
strm->WriteByte(v);
|
||||
@@ -133,8 +129,5 @@ namespace Tesses::Framework::Streams
|
||||
uint64_t data = *(uint64_t*)&v;
|
||||
WriteU64LE(data);
|
||||
}
|
||||
ByteWriter::~ByteWriter()
|
||||
{
|
||||
if(this->owns) delete this->strm;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -507,7 +507,7 @@ namespace Tesses::Framework::Streams {
|
||||
NETWORK_CLOSE(this->sock);
|
||||
this->valid=false;
|
||||
}
|
||||
NetworkStream* TcpServer::GetStream(std::string& ip, uint16_t& port)
|
||||
std::shared_ptr<NetworkStream> TcpServer::GetStream(std::string& ip, uint16_t& port)
|
||||
{
|
||||
struct sockaddr_storage storage;
|
||||
memset(&storage,0, sizeof(storage));
|
||||
@@ -522,7 +522,7 @@ namespace Tesses::Framework::Streams {
|
||||
ip = StringifyIP((struct sockaddr*)&storage);
|
||||
port = getPort((struct sockaddr*)&storage);
|
||||
|
||||
return new NetworkStream(s,true);
|
||||
return std::make_shared<NetworkStream>(s,true);
|
||||
}
|
||||
bool NetworkStream::CanRead()
|
||||
{
|
||||
@@ -690,7 +690,7 @@ namespace Tesses::Framework::Streams {
|
||||
|
||||
}
|
||||
}
|
||||
NetworkStream* NetworkStream::Accept(std::string& ip, uint16_t& port)
|
||||
std::shared_ptr<NetworkStream> NetworkStream::Accept(std::string& ip, uint16_t& port)
|
||||
{
|
||||
if(!this->success) return nullptr;
|
||||
struct sockaddr_storage storage;
|
||||
@@ -704,7 +704,7 @@ namespace Tesses::Framework::Streams {
|
||||
ip = StringifyIP((struct sockaddr*)&storage);
|
||||
port = getPort((struct sockaddr*)&storage);
|
||||
|
||||
return new NetworkStream((int32_t)s,(bool)true);
|
||||
return std::make_shared<NetworkStream>((int32_t)s,(bool)true);
|
||||
}
|
||||
size_t NetworkStream::Read(uint8_t* buff, size_t sz)
|
||||
{
|
||||
@@ -803,7 +803,7 @@ TcpServer::TcpServer(std::string unixPath,int32_t backlog)
|
||||
{
|
||||
|
||||
}
|
||||
NetworkStream* TcpServer::GetStream(std::string& ip, uint16_t& port)
|
||||
std::shared_ptr<NetworkStream> TcpServer::GetStream(std::string& ip, uint16_t& port)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
@@ -857,7 +857,7 @@ void NetworkStream::SetBroadcast(bool bC)
|
||||
{
|
||||
|
||||
}
|
||||
NetworkStream* NetworkStream::Accept(std::string& ip, uint16_t& port)
|
||||
std::shared_ptr<NetworkStream> NetworkStream::Accept(std::string& ip, uint16_t& port)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -92,30 +92,22 @@ namespace Tesses::Framework::Streams {
|
||||
{
|
||||
|
||||
}
|
||||
void Stream::CopyTo(Stream* strm, size_t buffSize)
|
||||
{
|
||||
if(strm != nullptr)
|
||||
this->CopyTo(*strm, buffSize);
|
||||
}
|
||||
void Stream::CopyTo(Stream& strm, size_t buffSize)
|
||||
|
||||
void Stream::CopyTo(std::shared_ptr<Stream> strm, size_t buffSize)
|
||||
{
|
||||
size_t read;
|
||||
#if defined(_WIN32)
|
||||
uint8_t* buffer = new uint8_t[buffSize];
|
||||
#else
|
||||
|
||||
|
||||
uint8_t buffer[buffSize];
|
||||
#endif
|
||||
do {
|
||||
read = this->Read(buffer,buffSize);
|
||||
strm.WriteBlock(buffer, read);
|
||||
strm->WriteBlock(buffer, read);
|
||||
|
||||
} while(read > 0);
|
||||
strm.Flush();
|
||||
strm->Flush();
|
||||
|
||||
#if defined(_WIN32)
|
||||
delete[] buffer;
|
||||
#endif
|
||||
|
||||
}
|
||||
Stream::~Stream()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user