diff options
author | randomdan <randomdan@localhost> | 2014-03-20 21:07:25 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2014-03-20 21:07:25 +0000 |
commit | 5780e0d6b8fb5c4269d224b865365a1c59afd38b (patch) | |
tree | 2fdef12c4a975d2b412b78d75654db6fab471379 /netfs/daemon/daemonDirectory.cpp | |
parent | Fix slice scanner and split .ice files back into logical blocks (diff) | |
download | netfs-5780e0d6b8fb5c4269d224b865365a1c59afd38b.tar.bz2 netfs-5780e0d6b8fb5c4269d224b865365a1c59afd38b.tar.xz netfs-5780e0d6b8fb5c4269d224b865365a1c59afd38b.zip |
Modularized interfaces for netfs
Diffstat (limited to 'netfs/daemon/daemonDirectory.cpp')
-rw-r--r-- | netfs/daemon/daemonDirectory.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/netfs/daemon/daemonDirectory.cpp b/netfs/daemon/daemonDirectory.cpp new file mode 100644 index 0000000..f679653 --- /dev/null +++ b/netfs/daemon/daemonDirectory.cpp @@ -0,0 +1,41 @@ +#include "pch.hpp" +#include <dirent.h> +#include <errno.h> +#include <map> +#include <sys/stat.h> +#include <sys/types.h> +#include "daemonDirectory.h" + +DirectoryServer::DirectoryServer(DIR * d) : + od(d) +{ +} + +DirectoryServer::~DirectoryServer() +{ +} + +void +DirectoryServer::close(const Ice::Current & ice) +{ + errno = 0; + if (::closedir(od) != 0) { + throw NetFS::SystemError(errno); + } + ice.adapter->remove(ice.id); +} + +NetFS::NameList +DirectoryServer::readdir(const Ice::Current&) +{ + errno = 0; + NetFS::NameList list; + while (dirent * d = ::readdir(od)) { + if (errno) { + throw NetFS::SystemError(errno); + } + list.push_back(d->d_name); + } + return list; +} + |