diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/replicant/filelock/api_filelock.h | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/replicant/filelock/api_filelock.h')
-rw-r--r-- | Src/replicant/filelock/api_filelock.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Src/replicant/filelock/api_filelock.h b/Src/replicant/filelock/api_filelock.h new file mode 100644 index 00000000..b04810d3 --- /dev/null +++ b/Src/replicant/filelock/api_filelock.h @@ -0,0 +1,49 @@ +#pragma once +#include "foundation/foundation.h" +#include "nx/nxuri.h" + +#include "service/types.h" +class cb_filelock : public Wasabi2::Dispatchable +{ +protected: + cb_filelock() : Wasabi2::Dispatchable(DISPATCHABLE_VERSION) {} + ~cb_filelock() {} +public: + int Interrupt() { return FileLockCallback_Interrupt(); } + enum + { + DISPATCHABLE_VERSION=0, + }; +private: + virtual int WASABICALL FileLockCallback_Interrupt()=0; +}; + +// {AC2E21C6-7C66-47F6-8C99-267D6CAA1942} +static const GUID file_lock_service_guid = +{ 0xac2e21c6, 0x7c66, 0x47f6, { 0x8c, 0x99, 0x26, 0x7d, 0x6c, 0xaa, 0x19, 0x42 } }; + + +class api_filelock : public Wasabi2::Dispatchable +{ +protected: + api_filelock() : Wasabi2::Dispatchable(DISPATCHABLE_VERSION) {} + ~api_filelock() {} +public: + static GUID GetServiceType() { return SVC_TYPE_UNIQUE; } + static GUID GetServiceGUID() { return file_lock_service_guid; } + int WaitForRead(nx_uri_t filename) { return FileLock_WaitForRead(filename); } + int WaitForReadInterruptable(nx_uri_t filename, cb_filelock *callback) { return FileLock_WaitForReadInterruptable(filename, callback); } + int WaitForWrite(nx_uri_t filename) { return FileLock_WaitForWrite(filename); } + int WaitForWriteInterruptable(nx_uri_t filename, cb_filelock *callback) { return FileLock_WaitForWriteInterruptable(filename, callback); } + int UnlockFile(nx_uri_t filename) { return FileLock_UnlockFile(filename); } + enum + { + DISPATCHABLE_VERSION=0, + }; +private: + virtual int WASABICALL FileLock_WaitForRead(nx_uri_t filename)=0; + virtual int WASABICALL FileLock_WaitForReadInterruptable(nx_uri_t filename, cb_filelock *callback)=0; + virtual int WASABICALL FileLock_WaitForWrite(nx_uri_t filename)=0; + virtual int WASABICALL FileLock_WaitForWriteInterruptable(nx_uri_t filename, cb_filelock *callback)=0; + virtual int WASABICALL FileLock_UnlockFile(nx_uri_t filename)=0; +}; |