summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2022-04-26 00:33:37 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2022-04-26 00:33:51 +0100
commit1c3bee2495a505e12949ab72fbf6a17f9c2db049 (patch)
treec1e4598205d2b3f16280f47d21ea617b3afc0b68
parentBreaking: remove unused reqenv from ftruncate and fgetattr (diff)
downloadnetfs-1c3bee2495a505e12949ab72fbf6a17f9c2db049.tar.bz2
netfs-1c3bee2495a505e12949ab72fbf6a17f9c2db049.tar.xz
netfs-1c3bee2495a505e12949ab72fbf6a17f9c2db049.zip
Support getting daemon settings into the client.
Unused as yet.
-rw-r--r--netfs/daemon/daemonService.cpp7
-rw-r--r--netfs/daemon/daemonService.h1
-rw-r--r--netfs/fuse/fuseApp.cpp1
-rw-r--r--netfs/fuse/fuseApp.h1
-rw-r--r--netfs/ice/service.ice2
-rw-r--r--netfs/ice/types.ice4
-rw-r--r--netfs/unittests/mockFuse.cpp1
-rw-r--r--netfs/unittests/testCore.cpp9
8 files changed, 25 insertions, 1 deletions
diff --git a/netfs/daemon/daemonService.cpp b/netfs/daemon/daemonService.cpp
index 38d40c7..03f60be 100644
--- a/netfs/daemon/daemonService.cpp
+++ b/netfs/daemon/daemonService.cpp
@@ -20,3 +20,10 @@ ServiceServer::connect(const std::string share, const std::string authtoken, con
return Ice::uncheckedCast<NetFS::VolumePrx>(ice.adapter->addFacetWithUUID(
std::make_shared<VolumeServer>(ex->RootPath, userLookup, groupLookup), "v01"));
}
+
+NetFS::SettingsPtr
+ServiceServer::getSettings(const Ice::Current & ice)
+{
+ const auto props = ice.adapter->getCommunicator()->getProperties();
+ return std::make_shared<NetFS::Settings>(props->getPropertyAsIntWithDefault("Ice.MessageSizeMax", 1024));
+}
diff --git a/netfs/daemon/daemonService.h b/netfs/daemon/daemonService.h
index fe79e21..1b240c2 100644
--- a/netfs/daemon/daemonService.h
+++ b/netfs/daemon/daemonService.h
@@ -10,6 +10,7 @@ public:
explicit ServiceServer(NetFS::Daemon::ConfigurationPtr c);
NetFS::VolumePrxPtr connect(const std::string share, const std::string auth, const Ice::Current &) override;
+ NetFS::SettingsPtr getSettings(const Ice::Current &) override;
private:
EntryResolverPtr<User> userLookup;
diff --git a/netfs/fuse/fuseApp.cpp b/netfs/fuse/fuseApp.cpp
index 159febf..ffb46e5 100644
--- a/netfs/fuse/fuseApp.cpp
+++ b/netfs/fuse/fuseApp.cpp
@@ -185,6 +185,7 @@ NetFS::FuseApp::connectToService()
if (!service) {
throw std::runtime_error("Invalid service proxy: " + proxyAddr);
}
+ daemonSettings = service->getSettings();
}
}
diff --git a/netfs/fuse/fuseApp.h b/netfs/fuse/fuseApp.h
index 78cdf06..8feb58a 100644
--- a/netfs/fuse/fuseApp.h
+++ b/netfs/fuse/fuseApp.h
@@ -102,6 +102,7 @@ namespace NetFS {
NetFS::VolumePrxPtr volume;
NetFS::ServicePrxPtr service;
Glacier2::SessionPrxPtr session;
+ NetFS::SettingsPtr daemonSettings;
bool sessionOpened {false};
std::string mountPoint;
diff --git a/netfs/ice/service.ice b/netfs/ice/service.ice
index a3c3e3b..1d13e8d 100644
--- a/netfs/ice/service.ice
+++ b/netfs/ice/service.ice
@@ -6,7 +6,7 @@
module NetFS {
interface Service {
- // NameList volumes() throws ConfigError;
Volume * connect(string volume, string auth) throws AuthError, ConfigError;
+ Settings getSettings();
};
};
diff --git a/netfs/ice/types.ice b/netfs/ice/types.ice
index 9f0b6e2..3ca6b07 100644
--- a/netfs/ice/types.ice
+++ b/netfs/ice/types.ice
@@ -36,6 +36,10 @@ module NetFS {
string grp;
};
+ class Settings {
+ optional(0) int MessageSizeMax;
+ };
+
sequence<byte> Buffer;
sequence<string> NameList;
diff --git a/netfs/unittests/mockFuse.cpp b/netfs/unittests/mockFuse.cpp
index 5f28c95..35bc61d 100644
--- a/netfs/unittests/mockFuse.cpp
+++ b/netfs/unittests/mockFuse.cpp
@@ -31,6 +31,7 @@ FuseMock::connectToService()
if (!service) {
throw std::runtime_error("Invalid service proxy: " + testEndpoint);
}
+ daemonSettings = service->getSettings();
}
}
diff --git a/netfs/unittests/testCore.cpp b/netfs/unittests/testCore.cpp
index 0807dab..5e7e65e 100644
--- a/netfs/unittests/testCore.cpp
+++ b/netfs/unittests/testCore.cpp
@@ -109,6 +109,15 @@ BOOST_AUTO_TEST_CASE(daemonInitialised)
volume->disconnect();
}
+BOOST_AUTO_TEST_CASE(daemonSettings)
+{
+ auto service = Ice::checkedCast<NetFS::ServicePrx>(ic->stringToProxy("Service"));
+ auto settings = service->getSettings();
+ BOOST_REQUIRE(settings);
+ BOOST_REQUIRE(settings->MessageSizeMax);
+ BOOST_CHECK_EQUAL(1024, *settings->MessageSizeMax);
+}
+
BOOST_AUTO_TEST_CASE(clientInitialised)
{
struct statvfs s;