20 #ifndef MPD_BLOCKING_NFS_CALLBACK_HXX 21 #define MPD_BLOCKING_NFS_CALLBACK_HXX 39 static constexpr std::chrono::steady_clock::duration timeout =
40 std::chrono::minutes(1);
47 std::exception_ptr error;
62 bool LockWaitFinished() {
63 const std::lock_guard<Mutex> protect(mutex);
75 void LockSetFinished() {
76 const std::lock_guard<Mutex> protect(mutex);
82 void OnNfsConnectionReady() final;
83 void OnNfsConnectionFailed(std::exception_ptr
e) final;
84 void OnNfsConnectionDisconnected(std::exception_ptr
e) final;
87 void OnNfsCallback(
unsigned status,
void *data) final;
88 void OnNfsError(std::exception_ptr &&
e) final;
91 virtual
void Start() = 0;
92 virtual
void HandleResult(
unsigned status,
void *data) = 0;
bool timed_wait(PosixMutex &mutex, std::chrono::steady_clock::duration timeout)
virtual void HandleResult(unsigned status, void *data)=0
void Run()
Throws std::runtime_error on error.
Utility class to implement a blocking NFS call using the libnfs async API.
An asynchronous connection to a NFS server.
NfsConnection & connection
Callbacks for an asynchronous libnfs operation.
BlockingNfsOperation(NfsConnection &_connection)