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{
30 class HttpClientRegistry;
31};
32
33//------------------------------------------------------------------------------
34namespace IO
35{
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 DeleteDirectory(const URI& path) const;
76 bool DirectoryExists(const URI& path) const;
77
79 bool CopyFile(const URI& from, const URI& to) const;
81 bool DeleteFile(const URI& path) const;
83 bool FileExists(const URI& path) const;
85 bool IsLocked(const URI& path) const;
87 void SetReadOnly(const URI& path, bool b) const;
89 bool IsReadOnly(const URI& path) const;
91 unsigned int ComputeFileCrc(const URI& path) const;
93 void SetFileWriteTime(const URI& path, FileTime fileTime);
95 FileTime GetFileWriteTime(const URI& path) const;
97 static bool ReadFile(const URI& path, Util::String & contents);
99 static Util::String NativePath(const Util::String& path);
100
102 Util::Array<Util::String> ListFiles(const URI& dir, const Util::String& pattern, bool asFullPath=false) const;
104 Util::Array<Util::String> ListDirectories(const URI& dir, const Util::String& pattern, bool asFullPath=false, bool prioritizeArchive=true) const;
105
107 URI CreateTemporaryFilename(const URI& path) const;
108
109private:
112
117
126};
127
128//------------------------------------------------------------------------------
131inline void
136
137//------------------------------------------------------------------------------
143inline bool
145{
146 return this->archiveFileSystemEnabled && ArchiveFileSystem::Instance()->HasArchives();
147}
148
149} // namespace IO
150//------------------------------------------------------------------------------
The common base class of Nebula.
Definition refcounted.h:38
Top-level platform wrapper class of archive file systems.
Defines a file-access timestamp.
The central server object of the IO subsystem offers the following services:
Definition ioserver.h:43
static Threading::CriticalSection assignCriticalSection
Definition ioserver.h:123
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:614
virtual ~IoServer()
destructor
Definition ioserver.cc:106
Ptr< AssignRegistry > assignRegistry
Definition ioserver.h:119
void SetFileWriteTime(const URI &path, FileTime fileTime)
set the write-time of a file
Definition ioserver.cc:498
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:115
void SetReadOnly(const URI &path, bool b) const
set the readonly status of a file
Definition ioserver.cc:461
bool IsArchiveFileSystemEnabled() const
return true if transparent archive filesystem is enabled
Definition ioserver.h:144
bool FileExists(const URI &path) const
return true if file exists
Definition ioserver.cc:414
static Threading::CriticalSection watcherCriticalSection
Definition ioserver.h:125
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:676
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:580
bool DeleteFile(const URI &path) const
delete a file
Definition ioserver.cc:390
bool MountEmbeddedArchive(const URI &uri)
mount an embedded file archive
Definition ioserver.cc:178
Ptr< FileWatcher > watcher
Definition ioserver.h:121
void SetArchiveFileSystemEnabled(bool b)
enable/disable transparent archive filesystem layering (default is yes)
Definition ioserver.h:132
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:636
static Threading::CriticalSection schemeCriticalSection
Definition ioserver.h:124
bool IsReadOnly(const URI &path) const
return read only status of a file
Definition ioserver.cc:473
bool IsLocked(const URI &path) const
return if file is locked
Definition ioserver.cc:663
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:114
bool DeleteDirectory(const URI &path) const
delete an empty directory
Definition ioserver.cc:402
Ptr< SchemeRegistry > schemeRegistry
Definition ioserver.h:120
bool MountArchive(const URI &uri)
mount a file archive (without archive file extension!)
Definition ioserver.cc:168
Ptr< Http::HttpClientRegistry > httpClientRegistry
Definition ioserver.h:118
bool CopyFile(const URI &from, const URI &to) const
copy a file
Definition ioserver.cc:297
__DeclareClass(IoServer)
static Util::String NativePath(const Util::String &path)
return native path
Definition ioserver.cc:688
static bool StandardArchivesMounted
Definition ioserver.h:116
FileTime GetFileWriteTime(const URI &path) const
return the last write-time of a file
Definition ioserver.cc:510
bool CreateDirectory(const URI &uri) const
create all missing directories in the path
Definition ioserver.cc:255
Ptr< StreamCache > streamCache
Definition ioserver.h:122
bool DirectoryExists(const URI &path) const
return true if directory exists
Definition ioserver.cc:436
unsigned int ComputeFileCrc(const URI &path) const
get the CRC checksum of a file
Definition ioserver.cc:356
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:522
bool archiveFileSystemEnabled
Definition ioserver.h:113
An URI object can split a Uniform Resource Identifier string into its components or build a string fr...
Definition uri.h:67
Linux implementation of filewatcher.
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Critical section objects are used to protect a portion of code from parallel execution.
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