CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::Win32FileWatcher Class Referencefinal

File watcher for the local file system for the Windows platform. More...

#include <CeresEngine/Platform/Win32/Win32FileWatcher.hpp>

Inheritance diagram for CeresEngine::Win32FileWatcher:
CeresEngine::IFileWatcher

Public Member Functions

 Win32FileWatcher (Win32FileSystem &fs, ExecutionContext &executionContext, const FileHandle &directory, const FileEvents &events, bool recursive)
 Creates a new Win32FileWatcher instance.
 
 Win32FileWatcher (Win32FileWatcher &&) noexcept=delete
 
Win32FileWatcheroperator= (Win32FileWatcher &&) noexcept=delete
 
 ~Win32FileWatcher () final
 
IFileSystemgetFileSystem () const final
 Gets file system that this watcher watches for.
 
void start () final
 Starts the file watching operation.
 
void stop () final
 Stops the file watching operation.
 
- Public Member Functions inherited from CeresEngine::IFileWatcher
 IFileWatcher ()
 
virtual ~IFileWatcher ()
 

Private Types

using Win32Handle = UPtr< void, decltype(&::CloseHandle)>
 

Private Attributes

RC< Win32FileSystemmFileSystem
 File system that created this watcher.
 
ExecutionContextmExecutionContext
 The execution context in which the file watcher events should be fired from.
 
FileHandle mHandle
 Directory that is watched.
 
FileEvents mEvents
 Watched events.
 
bool mRecursive
 Watch recursively?
 
Win32Handle mWin32DirectoryHandle
 Handle for the directory.
 
Win32Handle mWin32Event
 Event that is triggered for this watcher.
 
::OVERLAPPED mWin32Overlapped
 Overlapped data (for asynchronous operation)
 
char buffer [1024 *sizeof(FILE_NOTIFY_INFORMATION)]
 Buffer for overlapped data (1024 * sizeof(FILE_NOTIFY_INFORMATION))
 

Friends

class Win32FileWatcherService
 

Additional Inherited Members

- Protected Member Functions inherited from CeresEngine::IFileWatcher
void onFileEvent (const FileHandle &handle, FileEvent event)
 Called on file event.
 
- Protected Attributes inherited from CeresEngine::IFileWatcher
FileWatchermFileWatcher
 File watcher that owns the implementation.
 

Detailed Description

File watcher for the local file system for the Windows platform.

Member Typedef Documentation

◆ Win32Handle

Constructor & Destructor Documentation

◆ Win32FileWatcher() [1/2]

CeresEngine::Win32FileWatcher::Win32FileWatcher ( Win32FileSystem fs,
ExecutionContext executionContext,
const FileHandle directory,
const FileEvents events,
bool  recursive 
)
explicit

Creates a new Win32FileWatcher instance.

Parameters
fsThe file system that created this watcher.

◆ Win32FileWatcher() [2/2]

CeresEngine::Win32FileWatcher::Win32FileWatcher ( Win32FileWatcher &&  )
deletenoexcept

◆ ~Win32FileWatcher()

CeresEngine::Win32FileWatcher::~Win32FileWatcher ( )
final

Member Function Documentation

◆ getFileSystem()

IFileSystem * CeresEngine::Win32FileWatcher::getFileSystem ( ) const
finalvirtual

Gets file system that this watcher watches for.

Returns
The watched file system (can be null).

Implements CeresEngine::IFileWatcher.

◆ operator=()

Win32FileWatcher & CeresEngine::Win32FileWatcher::operator= ( Win32FileWatcher &&  )
deletenoexcept

◆ start()

void CeresEngine::Win32FileWatcher::start ( )
finalvirtual

Starts the file watching operation.

Note
This function begins to watch the file system on a background thread. On every event, onFileEvent() is called using the watcher execution context with the typeof the event and a file handle to the file or directory. To stop listening, call stop().

Implements CeresEngine::IFileWatcher.

◆ stop()

void CeresEngine::Win32FileWatcher::stop ( )
finalvirtual

Stops the file watching operation.

Implements CeresEngine::IFileWatcher.

Friends And Related Symbol Documentation

◆ Win32FileWatcherService

friend class Win32FileWatcherService
friend

Member Data Documentation

◆ buffer

char CeresEngine::Win32FileWatcher::buffer[1024 *sizeof(FILE_NOTIFY_INFORMATION)]
private

Buffer for overlapped data (1024 * sizeof(FILE_NOTIFY_INFORMATION))

◆ mEvents

FileEvents CeresEngine::Win32FileWatcher::mEvents
private

Watched events.

◆ mExecutionContext

ExecutionContext& CeresEngine::Win32FileWatcher::mExecutionContext
private

The execution context in which the file watcher events should be fired from.

◆ mFileSystem

RC<Win32FileSystem> CeresEngine::Win32FileWatcher::mFileSystem
private

File system that created this watcher.

◆ mHandle

FileHandle CeresEngine::Win32FileWatcher::mHandle
private

Directory that is watched.

◆ mRecursive

bool CeresEngine::Win32FileWatcher::mRecursive
private

Watch recursively?

◆ mWin32DirectoryHandle

Win32Handle CeresEngine::Win32FileWatcher::mWin32DirectoryHandle
private

Handle for the directory.

◆ mWin32Event

Win32Handle CeresEngine::Win32FileWatcher::mWin32Event
private

Event that is triggered for this watcher.

◆ mWin32Overlapped

::OVERLAPPED CeresEngine::Win32FileWatcher::mWin32Overlapped
private

Overlapped data (for asynchronous operation)


The documentation for this class was generated from the following file: