lib/nfs/Connection: add method Stat(path)
This commit is contained in:
parent
b5119d7958
commit
61b3aaaa07
@ -34,6 +34,21 @@ extern "C" {
|
||||
|
||||
#include <poll.h> /* for POLLIN, POLLOUT */
|
||||
|
||||
inline bool
|
||||
NfsConnection::CancellableCallback::Stat(nfs_context *ctx,
|
||||
const char *path,
|
||||
Error &error)
|
||||
{
|
||||
int result = nfs_stat_async(ctx, path, Callback, this);
|
||||
if (result < 0) {
|
||||
error.Format(nfs_domain, "nfs_stat_async() failed: %s",
|
||||
nfs_get_error(ctx));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
inline bool
|
||||
NfsConnection::CancellableCallback::Open(nfs_context *ctx,
|
||||
const char *path, int flags,
|
||||
@ -176,6 +191,21 @@ NfsConnection::RemoveLease(NfsLease &lease)
|
||||
active_leases.remove(&lease);
|
||||
}
|
||||
|
||||
bool
|
||||
NfsConnection::Stat(const char *path, NfsCallback &callback, Error &error)
|
||||
{
|
||||
assert(!callbacks.Contains(callback));
|
||||
|
||||
auto &c = callbacks.Add(callback, *this, false);
|
||||
if (!c.Stat(context, path, error)) {
|
||||
callbacks.Remove(c);
|
||||
return false;
|
||||
}
|
||||
|
||||
ScheduleSocket();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
NfsConnection::Open(const char *path, int flags, NfsCallback &callback,
|
||||
Error &error)
|
||||
|
@ -64,6 +64,8 @@ class NfsConnection : SocketMonitor, DeferredMonitor {
|
||||
connection(_connection),
|
||||
open(_open), close_fh(nullptr) {}
|
||||
|
||||
bool Stat(nfs_context *context, const char *path,
|
||||
Error &error);
|
||||
bool Open(nfs_context *context, const char *path, int flags,
|
||||
Error &error);
|
||||
bool Stat(nfs_context *context, struct nfsfh *fh,
|
||||
@ -155,6 +157,7 @@ public:
|
||||
void AddLease(NfsLease &lease);
|
||||
void RemoveLease(NfsLease &lease);
|
||||
|
||||
bool Stat(const char *path, NfsCallback &callback, Error &error);
|
||||
bool Open(const char *path, int flags, NfsCallback &callback,
|
||||
Error &error);
|
||||
bool Stat(struct nfsfh *fh, NfsCallback &callback, Error &error);
|
||||
|
Loading…
Reference in New Issue
Block a user