Nebula
Loading...
Searching...
No Matches
ioserver.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
19#include "core/refcounted.h"
20#include "core/singleton.h"
21#include "util/array.h"
22#include "util/string.h"
23#include "io/filetime.h"
24#include "io/schemeregistry.h"
27
28namespace Http
29{
31};
32
33//------------------------------------------------------------------------------
34namespace IO
35{
36class ArchiveFileSystem;
37class FileWatcher;
38class Stream;
39class URI;
40class AssignRegistry;
41
43{
46public:
48 IoServer();
50 virtual ~IoServer();
51
53 bool MountArchive(const URI& uri);
55 bool MountEmbeddedArchive(const URI& uri);
57 void UnmountArchive(const URI& uri);
59 bool IsArchiveMounted(const URI& uri) const;
61 void SetArchiveFileSystemEnabled(bool b);
63 bool IsArchiveFileSystemEnabled() const;
68
70 Ptr<Stream> CreateStream(const URI& uri) const;
72 bool CreateDirectory(const URI& uri) const;
74 bool EnsureDirectoriesForFile(const URI& uri) const;
76 bool DeleteDirectory(const URI& path) const;
78 bool DirectoryExists(const URI& path) const;
79
81 bool CopyFile(const URI& from, const URI& to) const;
83 bool DeleteFile(const URI& path) const;
85 bool FileExists(const URI& path) const;
87 bool IsLocked(const URI& path) const;
89 void SetReadOnly(const URI& path, bool b) const;
91 bool IsReadOnly(const URI& path) const;
93 unsigned int ComputeFileCrc(const URI& path) const;
95 void SetFileWriteTime(const URI& path, FileTime fileTime);
97 FileTime GetFileWriteTime(const URI& path) const;
99 static bool ReadFile(const URI& path, Util::String & contents);
101 static Util::String NativePath(const Util::String& path);
102
104 Util::Array<Util::String> ListFiles(const URI& dir, const Util::String& pattern, bool asFullPath=false) const;
106 Util::Array<Util::String> ListDirectories(const URI& dir, const Util::String& pattern, bool asFullPath=false, bool prioritizeArchive=true) const;
107
108 using FileMapFunc = void(const Util::String& file, const Util::String& folder);
110 void IterateFolders(const URI& dir, const Util::String& pattern, FileMapFunc iter);
111
113 URI CreateTemporaryFilename(const URI& path) const;
114
115private:
118
121 static Threading::CriticalSection archiveCriticalSection;
123
129 static Threading::CriticalSection assignCriticalSection;
130 static Threading::CriticalSection schemeCriticalSection;
131 static Threading::CriticalSection watcherCriticalSection;
132};
133
134//------------------------------------------------------------------------------
137inline void
142
143//------------------------------------------------------------------------------
149inline bool
151{
152 return this->archiveFileSystemEnabled && ArchiveFileSystem::Instance()->HasArchives();
153}
154
155} // namespace IO
156//------------------------------------------------------------------------------
The common base class of Nebula.
Definition refcounted.h:38
The HttpClientRegistry provides a way to re-use existing connections to HTTP servers instead of setti...
Definition httpclientregistry.h:26
Central registry for path assigns.
Definition assignregistry.h:24
Defines a file-access timestamp.
For registering callbacks for file modification events.
Definition filewatcher.h:72
static Threading::CriticalSection assignCriticalSection
Definition ioserver.h:129
Util::Array< Util::String > AddPathPrefixToArray(const Util::String &prefix, const Util::Array< Util::String > &filenames) const
helper function to add path prefix to file or dir names in array
Definition ioserver.cc:627
virtual ~IoServer()
destructor
Definition ioserver.cc:106
Ptr< AssignRegistry > assignRegistry
Definition ioserver.h:125
void SetFileWriteTime(const URI &path, FileTime fileTime)
set the write-time of a file
Definition ioserver.cc:511
bool IsArchiveMounted(const URI &uri) const
return true if a archive is mounted (without archive file extension!)
Definition ioserver.cc:198
static Threading::CriticalSection archiveCriticalSection
Definition ioserver.h:121
void SetReadOnly(const URI &path, bool b) const
set the readonly status of a file
Definition ioserver.cc:474
void(const Util::String &file, const Util::String &folder) FileMapFunc
Definition ioserver.h:108
bool IsArchiveFileSystemEnabled() const
return true if transparent archive filesystem is enabled
Definition ioserver.h:150
bool FileExists(const URI &path) const
return true if file exists
Definition ioserver.cc:427
static Threading::CriticalSection watcherCriticalSection
Definition ioserver.h:131
Ptr< Stream > CreateStream(const URI &uri) const
create a stream object for the given uri
Definition ioserver.cc:129
URI CreateTemporaryFilename(const URI &path) const
create a temporary file name
Definition ioserver.cc:689
Util::Array< Util::String > ListDirectories(const URI &dir, const Util::String &pattern, bool asFullPath=false, bool prioritizeArchive=true) const
list all subdirectories matching a pattern in a directory
Definition ioserver.cc:593
bool DeleteFile(const URI &path) const
delete a file
Definition ioserver.cc:403
bool MountEmbeddedArchive(const URI &uri)
mount an embedded file archive
Definition ioserver.cc:178
Ptr< FileWatcher > watcher
Definition ioserver.h:127
void SetArchiveFileSystemEnabled(bool b)
enable/disable transparent archive filesystem layering (default is yes)
Definition ioserver.h:138
void MountStandardArchives()
mount standard archives (e.g. home:export.zip and home:export_$(platform).zip)
Definition ioserver.cc:207
static bool ReadFile(const URI &path, Util::String &contents)
read contents of file and return as string
Definition ioserver.cc:649
static Threading::CriticalSection schemeCriticalSection
Definition ioserver.h:130
bool IsReadOnly(const URI &path) const
return read only status of a file
Definition ioserver.cc:486
bool IsLocked(const URI &path) const
return if file is locked
Definition ioserver.cc:676
void UnmountArchive(const URI &uri)
unmount a file archive (without archive file extension!)
Definition ioserver.cc:189
void UnmountStandardArchives()
unmount standard archives
Definition ioserver.cc:233
Ptr< ArchiveFileSystem > archiveFileSystem
Definition ioserver.h:120
void IterateFolders(const URI &dir, const Util::String &pattern, FileMapFunc iter)
iterate through all files in hierarchy and call provided function
Definition ioserver.cc:715
bool DeleteDirectory(const URI &path) const
delete an empty directory
Definition ioserver.cc:415
bool EnsureDirectoriesForFile(const URI &uri) const
create all missing directories
Definition ioserver.cc:296
Ptr< SchemeRegistry > schemeRegistry
Definition ioserver.h:126
bool MountArchive(const URI &uri)
mount a file archive (without archive file extension!)
Definition ioserver.cc:168
Ptr< Http::HttpClientRegistry > httpClientRegistry
Definition ioserver.h:124
bool CopyFile(const URI &from, const URI &to) const
copy a file
Definition ioserver.cc:310
__DeclareClass(IoServer)
static Util::String NativePath(const Util::String &path)
return native path
Definition ioserver.cc:701
static bool StandardArchivesMounted
Definition ioserver.h:122
FileTime GetFileWriteTime(const URI &path) const
return the last write-time of a file
Definition ioserver.cc:523
bool CreateDirectory(const URI &uri) const
create all missing directories in the path
Definition ioserver.cc:255
Ptr< StreamCache > streamCache
Definition ioserver.h:128
bool DirectoryExists(const URI &path) const
return true if directory exists
Definition ioserver.cc:449
unsigned int ComputeFileCrc(const URI &path) const
get the CRC checksum of a file
Definition ioserver.cc:369
IoServer()
constructor
Definition ioserver.cc:39
__DeclareSingleton(IoServer)
Util::Array< Util::String > ListFiles(const URI &dir, const Util::String &pattern, bool asFullPath=false) const
list all files matching a pattern in a directory
Definition ioserver.cc:535
bool archiveFileSystemEnabled
Definition ioserver.h:119
Offers an abstract interface for read/write access to a sequence of bytes.
Definition stream.h:28
An URI object can split a Uniform Resource Identifier string into its components or build a string fr...
Definition uri.h:67
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Nebula's dynamic array class.
Definition array.h:60
This file was generated with Nebula Trifid's idlc compiler tool.
Definition defaulthttprequesthandler.cc:15
Instances of wrapped stream classes.
Definition orientation.cc:10
Nebula's universal string class.
Definition String.cs:8