summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--netfs/fuse/fuseApp.h12
-rw-r--r--netfs/fuse/fuseApp.impl.h6
-rw-r--r--netfs/fuse/fuseDirs.cpp2
-rw-r--r--netfs/fuse/fuseFiles.cpp4
4 files changed, 12 insertions, 12 deletions
diff --git a/netfs/fuse/fuseApp.h b/netfs/fuse/fuseApp.h
index 1e43166..3f4d40d 100644
--- a/netfs/fuse/fuseApp.h
+++ b/netfs/fuse/fuseApp.h
@@ -17,7 +17,7 @@
namespace NetFS {
class DLL_PUBLIC FuseApp : public FuseAppBase {
private:
- class OpenDir : public IceUtil::Shared {
+ class OpenDir {
public:
OpenDir(DirectoryPrx remote, const std::string & path);
@@ -25,10 +25,10 @@ namespace NetFS {
DirectoryV2Prx remoteV2;
const std::string path;
};
- typedef IceUtil::Handle<OpenDir> OpenDirPtr;
+ typedef std::shared_ptr<OpenDir> OpenDirPtr;
typedef std::map<int, OpenDirPtr> OpenDirs;
- class OpenFile : public IceUtil::Shared {
+ class OpenFile {
public:
OpenFile(FilePrx remote, const std::string & path, int flags);
@@ -42,7 +42,7 @@ namespace NetFS {
std::list<Ice::AsyncResultPtr> bg;
mutable boost::shared_mutex _lock;
};
- typedef IceUtil::Handle<OpenFile> OpenFilePtr;
+ typedef std::shared_ptr<OpenFile> OpenFilePtr;
typedef std::map<int, OpenFilePtr> OpenFiles;
public:
@@ -104,8 +104,8 @@ namespace NetFS {
virtual NetFS::Client::ResourcePtr configureFromUri(const std::string &) const;
private:
- template<typename Handle>
- void setProxy(const Handle &, uint64_t & fh);
+ template<typename Handle, typename ... Params>
+ void setProxy(uint64_t & fh, const Params & ...);
template<typename Handle>
Handle getProxy(uint64_t localID);
template<typename Handle>
diff --git a/netfs/fuse/fuseApp.impl.h b/netfs/fuse/fuseApp.impl.h
index 66fe3b2..9d73de0 100644
--- a/netfs/fuse/fuseApp.impl.h
+++ b/netfs/fuse/fuseApp.impl.h
@@ -6,14 +6,14 @@
#include <safeMapFind.h>
namespace NetFS {
- template<typename Handle>
+ template<typename Handle, typename ... Params>
void
- FuseApp::setProxy(const Handle & od, uint64_t & fh)
+ FuseApp::setProxy(uint64_t & fh, const Params & ... params)
{
auto & map = getMap<Handle>();
Lock(_lock);
while (map.find(fh = ++openHandleId) != map.end()) ;
- map.emplace(fh, od);
+ map.emplace(fh, std::make_shared<typename Handle::element_type>(params...));
}
template<typename Handle>
diff --git a/netfs/fuse/fuseDirs.cpp b/netfs/fuse/fuseDirs.cpp
index 3325375..c277798 100644
--- a/netfs/fuse/fuseDirs.cpp
+++ b/netfs/fuse/fuseDirs.cpp
@@ -22,7 +22,7 @@ FuseApp::opendir(const char * p, struct fuse_file_info * fi)
{
try {
auto remote = volume->opendir(reqEnv(), p);
- setProxy<OpenDirPtr>(new OpenDir(remote, p), fi->fh);
+ setProxy<OpenDirPtr>(fi->fh, remote, p);
return 0;
}
catch (SystemError & e) {
diff --git a/netfs/fuse/fuseFiles.cpp b/netfs/fuse/fuseFiles.cpp
index 350e74f..4c93d56 100644
--- a/netfs/fuse/fuseFiles.cpp
+++ b/netfs/fuse/fuseFiles.cpp
@@ -62,7 +62,7 @@ FuseApp::open(const char * p, struct fuse_file_info * fi)
{
try {
auto remote = volume->open(reqEnv(), p, fi->flags);
- setProxy<OpenFilePtr>(new OpenFile(remote, p, fi->flags), fi->fh);
+ setProxy<OpenFilePtr>(fi->fh, remote, p, fi->flags);
return 0;
}
catch (SystemError & e) {
@@ -75,7 +75,7 @@ FuseApp::create(const char * p, mode_t m, struct fuse_file_info * fi)
{
try {
auto remote = volume->create(reqEnv(), p, fi->flags, m);
- setProxy<OpenFilePtr>(new OpenFile(remote, p, fi->flags), fi->fh);
+ setProxy<OpenFilePtr>(fi->fh, remote, p, fi->flags);
return 0;
}
catch (SystemError & e) {