summaryrefslogtreecommitdiff
path: root/py/demo/book/simple_filesystem/Client.py
diff options
context:
space:
mode:
Diffstat (limited to 'py/demo/book/simple_filesystem/Client.py')
-rw-r--r--py/demo/book/simple_filesystem/Client.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/py/demo/book/simple_filesystem/Client.py b/py/demo/book/simple_filesystem/Client.py
new file mode 100644
index 00000000000..16522d80c9e
--- /dev/null
+++ b/py/demo/book/simple_filesystem/Client.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2007 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.
+#
+# **********************************************************************
+
+import sys, traceback, Ice
+
+Ice.loadSlice('Filesystem.ice')
+import Filesystem
+
+# Recursively print the contents of directory "dir"
+# in tree fashion. For files, show the contents of
+# each file. The "depth" parameter is the current
+# nesting level (for indentation).
+
+def listRecursive(dir, depth):
+ indent = ''
+ depth = depth + 1
+ for i in range(depth):
+ indent = indent + '\t'
+
+ contents = dir.list()
+
+ for node in contents:
+ subdir = Filesystem.DirectoryPrx.checkedCast(node)
+ file = Filesystem.FilePrx.uncheckedCast(node)
+ print indent + node.name(),
+ if subdir:
+ print "(directory):"
+ listRecursive(subdir, depth)
+ else:
+ print "(file):"
+ text = file.read()
+ for line in text:
+ print indent + "\t" + line
+
+status = 0
+ic = None
+try:
+ # Create a communicator
+ #
+ ice = Ice.initialize(sys.argv)
+
+ # Create a proxy to the root directory
+ #
+ obj = ice.stringToProxy("RootDir:default -p 10000")
+
+ # Downcast the proxy to a Directory proxy
+ #
+ rootDir = Filesystem.DirectoryPrx.checkedCast(obj)
+
+ # Recursively list the contents of the root directory
+ #
+ print "Contents of root directory:"
+ listRecursive(rootDir, 0)
+except:
+ traceback.print_exc()
+ status = 1
+
+if ic:
+ # Clean up
+ #
+ try:
+ ic.destroy()
+ except:
+ traceback.print_exc()
+ status = 1
+
+sys.exit(status)