From 5ede31fe4d1619152d768869bdf25828b083b4d0 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 19 Jul 2015 16:10:57 +0100 Subject: Look up the resource only once --- netfs/fuse/fuseApp.cpp | 21 +++++++++------------ netfs/fuse/fuseApp.h | 2 +- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/netfs/fuse/fuseApp.cpp b/netfs/fuse/fuseApp.cpp index 3531f88..964f412 100644 --- a/netfs/fuse/fuseApp.cpp +++ b/netfs/fuse/fuseApp.cpp @@ -49,7 +49,12 @@ void * NetFS::FuseApp::init(struct fuse_conn_info *) { ic = Ice::initialize(_argc, _argv); - fc = ReadConfiguration(configPath); + auto fc = ReadConfiguration(configPath); + auto e = fc->Resources.find(resourceName); + if (e == fc->Resources.end()) { + throw std::runtime_error("No such resource: " + resourceName); + } + fcr = e->second; return NULL; } @@ -98,13 +103,9 @@ NetFS::FuseApp::connectToService() { if (!service) { Lock(_lock); - auto e = fc->Resources.find(resourceName); - if (e == fc->Resources.end()) { - throw std::runtime_error("No such resource: " + resourceName); - } - auto proxyAddr = e->second->ServiceIdentity; - for (const auto & ep : e->second->Endpoints) { + auto proxyAddr = fcr->ServiceIdentity; + for (const auto & ep : fcr->Endpoints) { proxyAddr += ":" + ep; } service = NetFS::ServicePrx::checkedCast(ic->stringToProxy(proxyAddr)); @@ -118,11 +119,7 @@ void NetFS::FuseApp::connectToVolume() { if (!volume) { - auto e = fc->Resources.find(resourceName); - if (e == fc->Resources.end()) { - throw std::runtime_error("No such export: " + resourceName); - } - volume = service->connect(e->second->ExportName, "bar"); + volume = service->connect(fcr->ExportName, "bar"); if (!volume) { throw std::runtime_error("Invalid filesystem proxy"); } diff --git a/netfs/fuse/fuseApp.h b/netfs/fuse/fuseApp.h index 335a1c0..70dd335 100644 --- a/netfs/fuse/fuseApp.h +++ b/netfs/fuse/fuseApp.h @@ -99,7 +99,7 @@ namespace NetFS { int & _argc; char ** _argv; Ice::CommunicatorPtr ic; - Client::ConfigurationPtr fc; + Client::ResourcePtr fcr; mutable boost::shared_mutex _lock; NetFS::VolumePrx volume; -- cgit v1.2.3