summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2008-05-12 00:26:34 +1000
committerMichi Henning <michi@zeroc.com>2008-05-12 00:26:34 +1000
commitc4597d776f109d48a29031e01a99a4a8664b470c (patch)
treefad36531d09c263ba8428495649162b922584e89 /cpp
parentFixed incorrect file permissions. (diff)
downloadice-c4597d776f109d48a29031e01a99a4a8664b470c.tar.bz2
ice-c4597d776f109d48a29031e01a99a4a8664b470c.tar.xz
ice-c4597d776f109d48a29031e01a99a4a8664b470c.zip
Added map filesystem demo for Java.
Fixed a few bugs and style issues in C++ map filesystem demo.
Diffstat (limited to 'cpp')
-rw-r--r--cpp/demo/book/evictor_filesystem/PersistentFilesystemI.cpp2
-rw-r--r--cpp/demo/book/evictor_filesystem/README2
-rw-r--r--cpp/demo/book/map_filesystem/FilesystemI.cpp68
-rw-r--r--cpp/demo/book/map_filesystem/FilesystemI.h4
-rw-r--r--cpp/demo/book/map_filesystem/README2
-rw-r--r--cpp/demo/book/map_filesystem/Server.cpp4
6 files changed, 44 insertions, 38 deletions
diff --git a/cpp/demo/book/evictor_filesystem/PersistentFilesystemI.cpp b/cpp/demo/book/evictor_filesystem/PersistentFilesystemI.cpp
index 7dcda47a6b8..cc143cbb346 100644
--- a/cpp/demo/book/evictor_filesystem/PersistentFilesystemI.cpp
+++ b/cpp/demo/book/evictor_filesystem/PersistentFilesystemI.cpp
@@ -88,7 +88,7 @@ Filesystem::DirectoryI::destroy(const Ice::Current& c)
{
if(!parent)
{
- throw Filesystem::PermissionDenied("cannot destroy root directory");
+ throw Filesystem::PermissionDenied("Cannot destroy root directory");
}
NodeDict children;
diff --git a/cpp/demo/book/evictor_filesystem/README b/cpp/demo/book/evictor_filesystem/README
index 9f719fc6211..f6abb864764 100644
--- a/cpp/demo/book/evictor_filesystem/README
+++ b/cpp/demo/book/evictor_filesystem/README
@@ -9,3 +9,5 @@ $ server
Then run the client in a separate window:
$ client
+
+Type "help" at the client prompt to see a list of commands.
diff --git a/cpp/demo/book/map_filesystem/FilesystemI.cpp b/cpp/demo/book/map_filesystem/FilesystemI.cpp
index 77f46fe519e..6cf7f3dd386 100644
--- a/cpp/demo/book/map_filesystem/FilesystemI.cpp
+++ b/cpp/demo/book/map_filesystem/FilesystemI.cpp
@@ -140,9 +140,9 @@ FilesystemI::FileI::destroy(const Current& c)
// FileI constructor
-FilesystemI::FileI::FileI(const CommunicatorPtr& communicator, const Identity& id,
+FilesystemI::FileI::FileI(const ObjectAdapterPtr& adapter, const Identity& id,
const PersistentFilePtr& file, const DirectoryIPtr& parent) :
- NodeI(communicator, id, parent), _file(file)
+ NodeI(adapter->getCommunicator(), id, parent), _file(file)
{
}
@@ -204,10 +204,10 @@ FilesystemI::DirectoryI::find(const std::string& name, const Current& c)
return i->second;
}
-// Slice Directory::createDirectory() operation
+// Slice Directory::createFile() operation
-DirectoryPrx
-FilesystemI::DirectoryI::createDirectory(const std::string& name, const Current& c)
+FilePrx
+FilesystemI::DirectoryI::createFile(const std::string& name, const Current& c)
{
{
IceUtil::Mutex::Lock lock(_m);
@@ -227,32 +227,32 @@ FilesystemI::DirectoryI::createDirectory(const std::string& name, const Current&
throw NameInUse(name);
}
- PersistentDirectoryPtr persistentDir = new PersistentDirectory;
- persistentDir->name = name;
+ PersistentFilePtr persistentFile = new PersistentFile;
+ persistentFile->name = name;
CommunicatorPtr communicator = c.adapter->getCommunicator();
- DirectoryIPtr dir = new DirectoryI(communicator, communicator->stringToIdentity(IceUtil::generateUUID()),
- persistentDir, this);
- assert(findNode(dir->_id) == 0);
- _map.put(IdentityNodeMap::value_type(dir->_id, persistentDir));
+ FileIPtr file = new FileI(c.adapter, communicator->stringToIdentity(IceUtil::generateUUID()),
+ persistentFile, this);
+ assert(findNode(file->id()) == 0);
+ _map.put(IdentityNodeMap::value_type(file->id(), persistentFile));
- DirectoryPrx proxy = DirectoryPrx::uncheckedCast(c.adapter->createProxy(dir->_id));
+ FilePrx proxy = FilePrx::uncheckedCast(c.adapter->createProxy(file->id()));
NodeDesc nd;
nd.name = name;
- nd.type = DirType;
+ nd.type = FileType;
nd.proxy = proxy;
_dir->nodes[name] = nd;
_map.put(IdentityNodeMap::value_type(_id, _dir));
- dir->activate(c.adapter);
+ file->activate(c.adapter);
return proxy;
}
-// Slice Directory::createFile() operation
+// Slice Directory::createDirectory() operation
-FilePrx
-FilesystemI::DirectoryI::createFile(const std::string& name, const Current& c)
+DirectoryPrx
+FilesystemI::DirectoryI::createDirectory(const std::string& name, const Current& c)
{
{
IceUtil::Mutex::Lock lock(_m);
@@ -265,31 +265,31 @@ FilesystemI::DirectoryI::createFile(const std::string& name, const Current& c)
IceUtil::StaticMutex::Lock lock(_lcMutex);
+ reap();
+
if(name.empty() || _dir->nodes.find(name) != _dir->nodes.end())
{
throw NameInUse(name);
}
- reap();
-
- PersistentFilePtr persistentFile = new PersistentFile;
- persistentFile->name = name;
+ PersistentDirectoryPtr persistentDir = new PersistentDirectory;
+ persistentDir->name = name;
CommunicatorPtr communicator = c.adapter->getCommunicator();
- FileIPtr file = new FileI(communicator, communicator->stringToIdentity(IceUtil::generateUUID()),
- persistentFile, this);
- assert(findNode(file->id()) == 0);
- _map.put(IdentityNodeMap::value_type(file->id(), persistentFile));
+ DirectoryIPtr dir = new DirectoryI(c.adapter, communicator->stringToIdentity(IceUtil::generateUUID()),
+ persistentDir, this);
+ assert(findNode(dir->_id) == 0);
+ _map.put(IdentityNodeMap::value_type(dir->_id, persistentDir));
- FilePrx proxy = FilePrx::uncheckedCast(c.adapter->createProxy(file->id()));
+ DirectoryPrx proxy = DirectoryPrx::uncheckedCast(c.adapter->createProxy(dir->_id));
NodeDesc nd;
nd.name = name;
- nd.type = FileType;
+ nd.type = DirType;
nd.proxy = proxy;
_dir->nodes[name] = nd;
_map.put(IdentityNodeMap::value_type(_id, _dir));
- file->activate(c.adapter);
+ dir->activate(c.adapter);
return proxy;
}
@@ -301,7 +301,7 @@ FilesystemI::DirectoryI::destroy(const Current& c)
{
if(!_parent)
{
- throw Filesystem::PermissionDenied("cannot destroy root directory");
+ throw Filesystem::PermissionDenied("Cannot destroy root directory");
}
IceUtil::Mutex::Lock lock(_m);
@@ -328,9 +328,9 @@ FilesystemI::DirectoryI::destroy(const Current& c)
// DirectoryI constructor
-FilesystemI::DirectoryI::DirectoryI(const CommunicatorPtr& communicator, const Identity& id,
+FilesystemI::DirectoryI::DirectoryI(const ObjectAdapterPtr& adapter, const Identity& id,
const PersistentDirectoryPtr& dir, const DirectoryIPtr& parent)
- : NodeI(communicator, id, parent), _dir(dir)
+ : NodeI(adapter->getCommunicator(), id, parent), _dir(dir)
{
//
// Instantiate the child nodes
@@ -341,20 +341,22 @@ FilesystemI::DirectoryI::DirectoryI(const CommunicatorPtr& communicator, const I
{
Identity id = p->second.proxy->ice_getIdentity();
PersistentNodePtr node = findNode(id);
+ NodeIPtr servant;
if(node)
{
if(p->second.type == DirType)
{
PersistentDirectoryPtr pDir = PersistentDirectoryPtr::dynamicCast(node);
assert(pDir);
- DirectoryIPtr d = new DirectoryI(communicator, id, pDir, this);
+ servant = new DirectoryI(adapter, id, pDir, this);
}
else
{
PersistentFilePtr pFile = PersistentFilePtr::dynamicCast(node);
assert(pFile);
- FileIPtr f = new FileI(communicator, id, pFile, this);
+ servant = new FileI(adapter, id, pFile, this);
}
+ servant->activate(adapter);
}
else
{
diff --git a/cpp/demo/book/map_filesystem/FilesystemI.h b/cpp/demo/book/map_filesystem/FilesystemI.h
index 83a8a0c087e..afca6869313 100644
--- a/cpp/demo/book/map_filesystem/FilesystemI.h
+++ b/cpp/demo/book/map_filesystem/FilesystemI.h
@@ -56,7 +56,7 @@ public:
virtual void write(const Filesystem::Lines&, const Ice::Current&);
virtual void destroy(const Ice::Current&);
- FileI(const Ice::CommunicatorPtr&, const Ice::Identity&,
+ FileI(const Ice::ObjectAdapterPtr&, const Ice::Identity&,
const Filesystem::PersistentFilePtr&, const DirectoryIPtr&);
private:
@@ -78,7 +78,7 @@ public:
virtual Filesystem::DirectoryPrx createDirectory(const ::std::string&, const Ice::Current&);
virtual void destroy(const Ice::Current&);
- DirectoryI(const Ice::CommunicatorPtr&, const Ice::Identity&,
+ DirectoryI(const Ice::ObjectAdapterPtr&, const Ice::Identity&,
const Filesystem::PersistentDirectoryPtr&, const DirectoryIPtr&);
void addReapEntry(const std::string&);
diff --git a/cpp/demo/book/map_filesystem/README b/cpp/demo/book/map_filesystem/README
index 370331ef723..bb7408ec72e 100644
--- a/cpp/demo/book/map_filesystem/README
+++ b/cpp/demo/book/map_filesystem/README
@@ -9,3 +9,5 @@ $ server
Then run the client in a separate window:
$ client
+
+Type "help" at the client prompt to see a list of commands.
diff --git a/cpp/demo/book/map_filesystem/Server.cpp b/cpp/demo/book/map_filesystem/Server.cpp
index 03025e77d52..d2a35b13003 100644
--- a/cpp/demo/book/map_filesystem/Server.cpp
+++ b/cpp/demo/book/map_filesystem/Server.cpp
@@ -27,7 +27,7 @@ public:
virtual int run(int, char*[])
{
//
- // Terminate cleanly on receipt of a signal
+ // Terminate cleanly on receipt of a signal.
//
shutdownOnInterrupt();
@@ -70,7 +70,7 @@ public:
pRoot->name = "/";
persistentMap.insert(IdentityNodeMap::value_type(rootId, pRoot));
}
- DirectoryIPtr dir = new DirectoryI(communicator(), rootId, pRoot, 0);
+ DirectoryIPtr dir = new DirectoryI(adapter, rootId, pRoot, 0);
dir->activate(adapter);
}