Open CASCADE Technology 7.8.2.dev
|
File system keeping last stream created by linked file system (OSD_FileSystem::DefaultFileSystem() by default) to be reused for opening a stream with the same URL. Note that as file is kept in opened state, application will need destroying this object to ensure all files being closed. This interface could be handy in context of reading numerous objects pointing to the same file (at different offset). Make sure to create a dedicated OSD_CachedFileSystem for each working thread to avoid data races. More...
#include <OSD_CachedFileSystem.hxx>
Data Structures | |
struct | OSD_CachedStream |
Public Member Functions | |
OSD_CachedFileSystem (const Handle< OSD_FileSystem > &theLinkedFileSystem=Handle< OSD_FileSystem >()) | |
Constructor. | |
const Handle< OSD_FileSystem > & | LinkedFileSystem () const |
Return linked file system; initialized with OSD_FileSystem::DefaultFileSystem() by default. | |
void | SetLinkedFileSystem (const Handle< OSD_FileSystem > &theLinkedFileSystem) |
Sets linked file system. | |
virtual Standard_Boolean | IsSupportedPath (const TCollection_AsciiString &theUrl) const override |
Returns TRUE if URL defines a supported protocol. | |
virtual Standard_Boolean | IsOpenIStream (const std::shared_ptr< std::istream > &theStream) const override |
Returns TRUE if current input stream is opened for reading operations. | |
virtual Standard_Boolean | IsOpenOStream (const std::shared_ptr< std::ostream > &theStream) const override |
Returns TRUE if current output stream is opened for writing operations. | |
virtual std::shared_ptr< std::istream > | OpenIStream (const TCollection_AsciiString &theUrl, const std::ios_base::openmode theParams, const int64_t theOffset, const std::shared_ptr< std::istream > &theOldStream) override |
Opens stream for specified file URL for reading operations or returns previously created stream pointing to the same URL. | |
virtual std::shared_ptr< std::ostream > | OpenOStream (const TCollection_AsciiString &theUrl, const std::ios_base::openmode theMode) override |
Opens stream for specified file URL for writing operations (std::ostream) by calling parent's method. | |
virtual std::shared_ptr< std::streambuf > | OpenStreamBuffer (const TCollection_AsciiString &theUrl, const std::ios_base::openmode theMode, const int64_t theOffset=0, int64_t *theOutBufSize=NULL) override |
Opens stream buffer for specified file URL. | |
Public Member Functions inherited from OSD_FileSystem | |
OSD_FileSystem () | |
Constructor. | |
virtual | ~OSD_FileSystem () |
Destructor. | |
Public Member Functions inherited from Standard_Transient | |
Standard_Transient () | |
Empty constructor. | |
Standard_Transient (const Standard_Transient &) | |
Copy constructor – does nothing. | |
Standard_Transient & | operator= (const Standard_Transient &) |
Assignment operator, needed to avoid copying reference counter. | |
virtual | ~Standard_Transient () |
Destructor must be virtual. | |
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
Returns a type descriptor about this object. | |
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
Returns a true value if this is an instance of Type. | |
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
Returns a true value if this is an instance of TypeName. | |
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. | |
Standard_Transient * | This () const |
Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. | |
Standard_Integer | GetRefCount () const noexcept |
Get the reference counter of this object. | |
void | IncrementRefCounter () noexcept |
Increments the reference counter of this object. | |
Standard_Integer | DecrementRefCounter () noexcept |
Decrements the reference counter of this object; returns the decremented value. | |
virtual void | Delete () const |
Memory deallocator for transient classes. | |
Protected Attributes | |
OSD_CachedStream | myStream |
active cached stream | |
Handle< OSD_FileSystem > | myLinkedFS |
linked file system to open files | |
Additional Inherited Members | |
Public Types inherited from Standard_Transient | |
typedef void | base_type |
Returns a type descriptor about this object. | |
Static Public Member Functions inherited from OSD_FileSystem | |
static const Handle< OSD_FileSystem > & | DefaultFileSystem () |
Returns a global file system, which a selector between registered file systems (OSD_FileSystemSelector). | |
static void | AddDefaultProtocol (const Handle< OSD_FileSystem > &theFileSystem, bool theIsPreferred=false) |
Registers file system within the global file system selector returned by OSD_FileSystem::DefaultFileSystem(). Note that registering protocols is not thread-safe operation and expected to be done once at application startup. | |
static void | RemoveDefaultProtocol (const Handle< OSD_FileSystem > &theFileSystem) |
Unregisters file system within the global file system selector returned by OSD_FileSystem::DefaultFileSystem(). | |
Static Public Member Functions inherited from Standard_Transient | |
static constexpr const char * | get_type_name () |
Returns a type descriptor about this object. | |
static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
Returns type descriptor of Standard_Transient class. | |
File system keeping last stream created by linked file system (OSD_FileSystem::DefaultFileSystem() by default) to be reused for opening a stream with the same URL. Note that as file is kept in opened state, application will need destroying this object to ensure all files being closed. This interface could be handy in context of reading numerous objects pointing to the same file (at different offset). Make sure to create a dedicated OSD_CachedFileSystem for each working thread to avoid data races.
OSD_CachedFileSystem::OSD_CachedFileSystem | ( | const Handle< OSD_FileSystem > & | theLinkedFileSystem = Handle< OSD_FileSystem >() | ) |
Constructor.
|
overridevirtual |
Returns TRUE if current input stream is opened for reading operations.
Implements OSD_FileSystem.
|
overridevirtual |
Returns TRUE if current output stream is opened for writing operations.
Implements OSD_FileSystem.
|
overridevirtual |
Returns TRUE if URL defines a supported protocol.
Implements OSD_FileSystem.
|
inline |
Return linked file system; initialized with OSD_FileSystem::DefaultFileSystem() by default.
|
overridevirtual |
Opens stream for specified file URL for reading operations or returns previously created stream pointing to the same URL.
Reimplemented from OSD_FileSystem.
|
overridevirtual |
Opens stream for specified file URL for writing operations (std::ostream) by calling parent's method.
Reimplemented from OSD_FileSystem.
|
overridevirtual |
Opens stream buffer for specified file URL.
Implements OSD_FileSystem.
|
inline |
Sets linked file system.
|
protected |
linked file system to open files
|
protected |
active cached stream