lib/nfs/Connection: move code to Service()

This commit is contained in:
Max Kellermann 2014-12-14 15:45:10 +01:00
parent 32bca64920
commit 80f2ba7fca
2 changed files with 28 additions and 12 deletions

View File

@ -404,20 +404,11 @@ NfsConnection::ScheduleSocket()
SocketMonitor::Schedule(libnfs_to_events(nfs_which_events(context))); SocketMonitor::Schedule(libnfs_to_events(nfs_which_events(context)));
} }
bool inline int
NfsConnection::OnSocketReady(unsigned flags) NfsConnection::Service(unsigned flags)
{ {
assert(GetEventLoop().IsInside()); assert(GetEventLoop().IsInside());
assert(deferred_close.empty()); assert(context != nullptr);
bool closed = false;
const bool was_mounted = mount_finished;
if (!mount_finished)
/* until the mount is finished, the NFS client may use
various sockets, therefore we unregister and
re-register it each time */
SocketMonitor::Steal();
#ifndef NDEBUG #ifndef NDEBUG
assert(!in_event); assert(!in_event);
@ -435,6 +426,26 @@ NfsConnection::OnSocketReady(unsigned flags)
in_service = false; in_service = false;
#endif #endif
return result;
}
bool
NfsConnection::OnSocketReady(unsigned flags)
{
assert(GetEventLoop().IsInside());
assert(deferred_close.empty());
bool closed = false;
const bool was_mounted = mount_finished;
if (!mount_finished)
/* until the mount is finished, the NFS client may use
various sockets, therefore we unregister and
re-register it each time */
SocketMonitor::Steal();
const int result = Service(flags);
while (!deferred_close.empty()) { while (!deferred_close.empty()) {
InternalClose(deferred_close.front()); InternalClose(deferred_close.front());
deferred_close.pop_front(); deferred_close.pop_front();

View File

@ -207,6 +207,11 @@ private:
void ScheduleSocket(); void ScheduleSocket();
/**
* Wrapper for nfs_service().
*/
int Service(unsigned flags);
/* virtual methods from SocketMonitor */ /* virtual methods from SocketMonitor */
virtual bool OnSocketReady(unsigned flags) override; virtual bool OnSocketReady(unsigned flags) override;