summaryrefslogtreecommitdiff
path: root/cpp/demo/book/map_filesystem/PersistentFilesystemI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/book/map_filesystem/PersistentFilesystemI.cpp')
-rw-r--r--cpp/demo/book/map_filesystem/PersistentFilesystemI.cpp282
1 files changed, 0 insertions, 282 deletions
diff --git a/cpp/demo/book/map_filesystem/PersistentFilesystemI.cpp b/cpp/demo/book/map_filesystem/PersistentFilesystemI.cpp
deleted file mode 100644
index c5a0e6502d5..00000000000
--- a/cpp/demo/book/map_filesystem/PersistentFilesystemI.cpp
+++ /dev/null
@@ -1,282 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice is licensed to you under the terms described in the
-// ICE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#include <PersistentFilesystemI.h>
-#include <Freeze/Freeze.h>
-
-using namespace std;
-
-//
-// Filesystem::NodeI
-//
-
-IdentityNodeMap* Filesystem::NodeI::_map;
-
-Filesystem::NodeI::NodeI(const DirectoryIPtr& parent)
- : _parent(parent), _destroyed(false)
-{
-}
-
-//
-// Filesystem::FileI
-//
-
-void
-Filesystem::FileI::destroy(const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
- _destroyed = true;
- _parent->removeEntry(_file->name);
- _map->erase(c.id);
- c.adapter->remove(c.id);
-}
-
-string
-Filesystem::FileI::name(const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- return _file->name;
-}
-
-
-Filesystem::Lines
-Filesystem::FileI::read(const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- return _file->text;
-}
-
-void
-Filesystem::FileI::write(const Filesystem::Lines& text, const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- _file->text = text;
- _map->put(make_pair(c.id, _file));
-}
-
-Filesystem::FileI::FileI(const PersistentFilePtr& file, const DirectoryIPtr& parent)
- : NodeI(parent), _file(file)
-{
-}
-
-//
-// Filesystem::DirectoryI
-//
-
-Ice::ObjectAdapterPtr Filesystem::DirectoryI::_adapter;
-
-void
-Filesystem::DirectoryI::destroy(const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(!_parent)
- {
- throw Filesystem::PermissionDenied("Cannot destroy root directory");
- }
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
- if(!_dir->nodes.empty())
- {
- throw Filesystem::PermissionDenied("Cannot destroy non-empty directory");
- }
- _destroyed = true;
- _parent->removeEntry(_dir->name);
- _map->erase(c.id);
- c.adapter->remove(c.id);
-}
-
-string
-Filesystem::DirectoryI::name(const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- return _dir->name;
-}
-
-Filesystem::NodeDescSeq
-Filesystem::DirectoryI::list(const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- NodeDict::const_iterator p;
- NodeDescSeq result;
- for(p = _dir->nodes.begin(); p != _dir->nodes.end(); ++p)
- {
- result.push_back(p->second);
- }
- return result;
-}
-
-Filesystem::NodeDesc
-Filesystem::DirectoryI::find(const string& name, const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- NodeDict::const_iterator p = _dir->nodes.find(name);
- if(p == _dir->nodes.end())
- {
- throw NoSuchName(name);
- }
- return p->second;
-}
-
-Filesystem::DirectoryPrx
-Filesystem::DirectoryI::createDirectory(const string& name, const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- if(name.empty() || _dir->nodes.find(name) != _dir->nodes.end())
- {
- throw NameInUse(name);
- }
-
- PersistentDirectoryPtr persistentDir = new PersistentDirectory;
- persistentDir->name = name;
- Ice::Identity id = c.adapter->getCommunicator()->stringToIdentity(IceUtil::generateUUID());
- DirectoryIPtr dir = new DirectoryI(id, persistentDir, this);
- _map->put(make_pair(id, persistentDir));
-
- DirectoryPrx proxy = DirectoryPrx::uncheckedCast(c.adapter->createProxy(id));
-
- NodeDesc nd;
- nd.name = name;
- nd.type = DirType;
- nd.proxy = proxy;
- _dir->nodes[name] = nd;
-
- _map->put(make_pair(c.id, _dir));
-
- c.adapter->add(dir, id);
-
- return proxy;
-}
-
-Filesystem::FilePrx
-Filesystem::DirectoryI::createFile(const string& name, const Ice::Current& c)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- if(_destroyed)
- {
- throw Ice::ObjectNotExistException(__FILE__, __LINE__, c.id, c.facet, c.operation);
- }
-
- if(name.empty() || _dir->nodes.find(name) != _dir->nodes.end())
- {
- throw NameInUse(name);
- }
-
- PersistentFilePtr persistentFile = new PersistentFile;
- persistentFile->name = name;
- FileIPtr file = new FileI(persistentFile, this);
- Ice::Identity id = c.adapter->getCommunicator()->stringToIdentity(IceUtil::generateUUID());
- _map->put(make_pair(id, persistentFile));
-
- FilePrx proxy = FilePrx::uncheckedCast(c.adapter->createProxy(id));
-
- NodeDesc nd;
- nd.name = name;
- nd.type = FileType;
- nd.proxy = proxy;
- _dir->nodes[name] = nd;
-
- _map->put(make_pair(c.id, _dir));
-
- c.adapter->add(file, id);
-
- return proxy;
-}
-
-//
-// Called by the child to remove itself from the parent's node map when the child is destroyed.
-//
-void
-Filesystem::DirectoryI::removeEntry(const string& name)
-{
- IceUtil::Mutex::Lock lock(_nodeMutex);
-
- NodeDict::iterator p = _dir->nodes.find(name);
- assert(p != _dir->nodes.end());
- _dir->nodes.erase(p);
- _map->put(make_pair(_id, _dir));
-}
-
-Filesystem::DirectoryI::DirectoryI(const Ice::Identity& pid,
- const PersistentDirectoryPtr& pdir,
- const DirectoryIPtr& parent)
- : NodeI(parent), _id(pid), _dir(pdir)
-{
- // Instantiate the child nodes
- //
- for(NodeDict::iterator p = _dir->nodes.begin(); p != _dir->nodes.end(); ++p)
- {
- Ice::Identity id = p->second.proxy->ice_getIdentity();
- PersistentNodePtr node = _map->find(id)->second;
- if(p->second.type == DirType)
- {
- PersistentDirectoryPtr pDir = PersistentDirectoryPtr::dynamicCast(node);
- assert(pDir);
- DirectoryIPtr d = new DirectoryI(id, pDir, this);
- _adapter->add(d, id);
- }
- else
- {
- PersistentFilePtr pFile = PersistentFilePtr::dynamicCast(node);
- assert(pFile);
- FileIPtr f = new FileI(pFile, this);
- _adapter->add(f, id);
- }
- }
-}