diff --git a/include/TessesFramework/Filesystem/LocalFS.hpp b/include/TessesFramework/Filesystem/LocalFS.hpp index 0d352e2..fb1827c 100644 --- a/include/TessesFramework/Filesystem/LocalFS.hpp +++ b/include/TessesFramework/Filesystem/LocalFS.hpp @@ -39,7 +39,6 @@ namespace Tesses::Framework::Filesystem void Chmod(VFSPath path, uint32_t mode); - }; extern std::shared_ptr LocalFS; } \ No newline at end of file diff --git a/include/TessesFramework/Filesystem/MemoryFilesystem.hpp b/include/TessesFramework/Filesystem/MemoryFilesystem.hpp index ff21664..16627e8 100644 --- a/include/TessesFramework/Filesystem/MemoryFilesystem.hpp +++ b/include/TessesFramework/Filesystem/MemoryFilesystem.hpp @@ -94,6 +94,7 @@ namespace Tesses::Framework::Filesystem VFSPath SystemToVFSPath(std::string path); void GetDate(VFSPath path, Date::DateTime& lastWrite, Date::DateTime& lastAccess); void SetDate(VFSPath path, Date::DateTime lastWrite, Date::DateTime lastAccess); + ~MemoryFilesystem(); }; }; \ No newline at end of file diff --git a/include/TessesFramework/Filesystem/MountableFilesystem.hpp b/include/TessesFramework/Filesystem/MountableFilesystem.hpp index 22be923..5dee18f 100644 --- a/include/TessesFramework/Filesystem/MountableFilesystem.hpp +++ b/include/TessesFramework/Filesystem/MountableFilesystem.hpp @@ -57,5 +57,6 @@ namespace Tesses::Framework::Filesystem void Chmod(VFSPath path, uint32_t mode); + void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Filesystem/VFS.hpp b/include/TessesFramework/Filesystem/VFS.hpp index 1d0e3a7..7d2cd7d 100644 --- a/include/TessesFramework/Filesystem/VFS.hpp +++ b/include/TessesFramework/Filesystem/VFS.hpp @@ -153,5 +153,7 @@ namespace Tesses::Framework::Filesystem virtual void Chmod(VFSPath path, uint32_t mode); virtual ~VFS(); + + virtual void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Streams/BufferedStream.hpp b/include/TessesFramework/Streams/BufferedStream.hpp index 7f86db0..2526fc0 100644 --- a/include/TessesFramework/Streams/BufferedStream.hpp +++ b/include/TessesFramework/Streams/BufferedStream.hpp @@ -20,6 +20,7 @@ namespace Tesses::Framework::Streams size_t Write(const uint8_t* buff, size_t sz); ~BufferedStream(); + void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Streams/FileStream.hpp b/include/TessesFramework/Streams/FileStream.hpp index 783568d..7a40ff1 100644 --- a/include/TessesFramework/Streams/FileStream.hpp +++ b/include/TessesFramework/Streams/FileStream.hpp @@ -23,6 +23,6 @@ namespace Tesses::Framework::Streams void Flush(); void Seek(int64_t pos, SeekOrigin whence); ~FileStream(); - + void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Streams/MemoryStream.hpp b/include/TessesFramework/Streams/MemoryStream.hpp index 8cc8199..720c8e8 100644 --- a/include/TessesFramework/Streams/MemoryStream.hpp +++ b/include/TessesFramework/Streams/MemoryStream.hpp @@ -17,6 +17,6 @@ namespace Tesses::Framework::Streams int64_t GetLength(); int64_t GetPosition(); void Seek(int64_t pos, SeekOrigin whence); - + void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Streams/NetworkStream.hpp b/include/TessesFramework/Streams/NetworkStream.hpp index 83e60b5..2819a5f 100644 --- a/include/TessesFramework/Streams/NetworkStream.hpp +++ b/include/TessesFramework/Streams/NetworkStream.hpp @@ -53,5 +53,6 @@ namespace Tesses::Framework::Streams static std::vector> GetIPs(bool ipV6=false); ~NetworkStream(); void SetNoDelay(bool noDelay); + void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Streams/PtyStream.hpp b/include/TessesFramework/Streams/PtyStream.hpp index c8bb2b6..cd364f6 100644 --- a/include/TessesFramework/Streams/PtyStream.hpp +++ b/include/TessesFramework/Streams/PtyStream.hpp @@ -25,5 +25,6 @@ namespace Tesses::Framework::Streams void Resize(WindowSize sz); WindowSize GetWindowSize(); ~PtyStream(); + void Close(); }; } \ No newline at end of file diff --git a/include/TessesFramework/Streams/Stream.hpp b/include/TessesFramework/Streams/Stream.hpp index d3b072b..0e29229 100644 --- a/include/TessesFramework/Streams/Stream.hpp +++ b/include/TessesFramework/Streams/Stream.hpp @@ -24,6 +24,7 @@ namespace Tesses::Framework::Streams virtual void Flush(); virtual void Seek(int64_t pos, SeekOrigin whence); void CopyTo(std::shared_ptr strm, size_t buffSize=1024); + virtual void Close(); virtual ~Stream(); }; } \ No newline at end of file diff --git a/src/Filesystem/MemoryFilesystem.cpp b/src/Filesystem/MemoryFilesystem.cpp index db04e4a..64ac995 100644 --- a/src/Filesystem/MemoryFilesystem.cpp +++ b/src/Filesystem/MemoryFilesystem.cpp @@ -3,6 +3,7 @@ namespace Tesses::Framework::Filesystem { + MemoryFilesystemStream::MemoryFilesystemStream(std::shared_ptr mtx, std::shared_ptr data,bool canRead, bool canWrite, bool canSeek) { this->mtx = mtx; @@ -635,7 +636,7 @@ namespace Tesses::Framework::Filesystem } MemoryFilesystem::~MemoryFilesystem() { - + } MemoryFilesystem::MemoryFilesystem() { diff --git a/src/Filesystem/MountableFilesystem.cpp b/src/Filesystem/MountableFilesystem.cpp index 1e6cb51..9f037b9 100644 --- a/src/Filesystem/MountableFilesystem.cpp +++ b/src/Filesystem/MountableFilesystem.cpp @@ -21,6 +21,13 @@ namespace Tesses::Framework::Filesystem for(auto item : this->directories) delete item; } + void MountableFilesystem::Close() + { + this->root=nullptr; + for(auto item : this->directories) delete item; + this->directories.clear(); + } + void MountableFilesystem::GetFS(VFSPath srcPath, VFSPath& destRoot, VFSPath& destPath, std::shared_ptr& vfs) { diff --git a/src/Filesystem/VFS.cpp b/src/Filesystem/VFS.cpp index c485003..30fdbf9 100644 --- a/src/Filesystem/VFS.cpp +++ b/src/Filesystem/VFS.cpp @@ -517,5 +517,7 @@ namespace Tesses::Framework::Filesystem void VFS::Chmod(VFSPath path, uint32_t mode) { } - + void VFS::Close() { + + } } \ No newline at end of file diff --git a/src/Streams/BufferedStream.cpp b/src/Streams/BufferedStream.cpp index 54dfb49..fe7e135 100644 --- a/src/Streams/BufferedStream.cpp +++ b/src/Streams/BufferedStream.cpp @@ -58,4 +58,9 @@ namespace Tesses::Framework::Streams { { delete buffer; } + + void BufferedStream::Close() + { + this->strm->Close(); + } } \ No newline at end of file diff --git a/src/Streams/FileStream.cpp b/src/Streams/FileStream.cpp index d39b767..e077d0e 100644 --- a/src/Streams/FileStream.cpp +++ b/src/Streams/FileStream.cpp @@ -104,7 +104,10 @@ namespace Tesses::Framework::Streams } FileStream::~FileStream() { - + Close(); + } + void FileStream::Close() + { if(!f) return; if(this->owns) fclose(this->f); diff --git a/src/Streams/MemoryStream.cpp b/src/Streams/MemoryStream.cpp index 670f0f2..a1e8960 100644 --- a/src/Streams/MemoryStream.cpp +++ b/src/Streams/MemoryStream.cpp @@ -67,4 +67,8 @@ namespace Tesses::Framework::Streams break; } } + void MemoryStream::Close() + { + this->buffer.clear(); + } } \ No newline at end of file diff --git a/src/Streams/NetworkStream.cpp b/src/Streams/NetworkStream.cpp index c68209c..c81bd31 100644 --- a/src/Streams/NetworkStream.cpp +++ b/src/Streams/NetworkStream.cpp @@ -771,10 +771,15 @@ namespace Tesses::Framework::Streams { if(sz2 < 0) return 0; return (size_t)sz2; } - NetworkStream::~NetworkStream() + void NetworkStream::Close() { if(this->owns && this->success) NETWORK_CLOSE(this->sock); + this->success=0; + } + NetworkStream::~NetworkStream() + { + Close(); } void NetworkStream::SetNoDelay(bool noDelay) { @@ -888,6 +893,10 @@ NetworkStream::~NetworkStream() void NetworkStream::SetNoDelay(bool noDelay) { +} +void NetworkStream::Close() +{ + } uint16_t NetworkStream::GetPort() { diff --git a/src/Streams/PtyStream.cpp b/src/Streams/PtyStream.cpp index 2163ca1..c3d3ce4 100644 --- a/src/Streams/PtyStream.cpp +++ b/src/Streams/PtyStream.cpp @@ -122,6 +122,11 @@ namespace Tesses::Framework::Streams { } PtyStream::~PtyStream() { + Close(); + } + void PtyStream::Close() + { + if(this->eos) return; this->eos=true; #if !defined(GEKKO) && !defined(__PS2__) && !defined(_WIN32) && !defined(__SWITCH__) && !defined(__FreeBSD__) && defined(TESSESFRAMEWORK_ENABLE_PROCESS) close(this->socket); diff --git a/src/Streams/Stream.cpp b/src/Streams/Stream.cpp index e66383d..45878d1 100644 --- a/src/Streams/Stream.cpp +++ b/src/Streams/Stream.cpp @@ -91,6 +91,10 @@ namespace Tesses::Framework::Streams { void Stream::Seek(int64_t pos, SeekOrigin whence) { + } + void Stream::Close() + { + } void Stream::CopyTo(std::shared_ptr strm, size_t buffSize)