diff options
author | Jose <jose@zeroc.com> | 2014-11-11 22:33:50 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2014-11-11 22:33:50 +0100 |
commit | fefe5c503a8bec0882443e994db64f916f806b5e (patch) | |
tree | f1881528106f75b50ab0f72ea6b5da6f90dc5b2e /py/demo/Manual/simple_filesystem/Server.py | |
parent | ICE-5863 - merge Java RPMs (diff) | |
download | ice-fefe5c503a8bec0882443e994db64f916f806b5e.tar.bz2 ice-fefe5c503a8bec0882443e994db64f916f806b5e.tar.xz ice-fefe5c503a8bec0882443e994db64f916f806b5e.zip |
Fixed (ICE-5857) rename manual -> Manual
Diffstat (limited to 'py/demo/Manual/simple_filesystem/Server.py')
-rwxr-xr-x | py/demo/Manual/simple_filesystem/Server.py | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/py/demo/Manual/simple_filesystem/Server.py b/py/demo/Manual/simple_filesystem/Server.py new file mode 100755 index 00000000000..46393576f03 --- /dev/null +++ b/py/demo/Manual/simple_filesystem/Server.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python +# ********************************************************************** +# +# Copyright (c) 2003-2014 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, threading, Ice + +Ice.loadSlice('Filesystem.ice') +import Filesystem + +class DirectoryI(Filesystem.Directory): + def __init__(self, communicator, name, parent): + self._name = name + self._parent = parent + self._contents = [] + + # Create an identity. The root directory has the fixed identity "RootDir" + # + self._id = Ice.Identity() + if self._parent: + self._id.name = Ice.generateUUID() + else: + self._id.name = "RootDir" + + # Slice Node::name() operation + + def name(self, current=None): + return self._name + + # Slice Directory::list() operation + + def list(self, current=None): + return self._contents + + # addChild is called by the child in order to add + # itself to the _contents member of the parent + + def addChild(self, child): + self._contents.append(child) + + # Add servant to ASM and Parent's _contents map. + + def activate(self, a): + thisNode = Filesystem.DirectoryPrx.uncheckedCast(a.add(self, self._id)) + if self._parent: + self._parent.addChild(thisNode) + +class FileI(Filesystem.File): + def __init__(self, communicator, name, parent): + self._name = name + self._parent = parent + self.lines = [] + + assert(self._parent != None) + + # Create an identity + # + self._id = Ice.Identity() + self._id.name = Ice.generateUUID() + + # Slice Node::name() operation + + def name(self, current=None): + return self._name + + # Slice File::read() operation + + def read(self, current=None): + return self._lines + + # Slice File::write() operation + + def write(self, text, current=None): + self._lines = text + + # Add servant to ASM and Parent's _contents map. + + def activate(self, a): + thisNode = Filesystem.FilePrx.uncheckedCast(a.add(self, self._id)) + self._parent.addChild(thisNode) + + +class Server(Ice.Application): + def run(self, args): + # Terminate cleanly on receipt of a signal + # + self.shutdownOnInterrupt() + + # Create an object adapter + # + adapter = self.communicator().createObjectAdapterWithEndpoints( + "SimpleFileSystem", "default -h localhost -p 10000") + + # Create the root directory (with name "/" and no parent) + # + root = DirectoryI(self.communicator(), "/", None) + root.activate(adapter) + + # Create a file called "README" in the root directory + # + file = FileI(self.communicator(), "README", root) + text = [ "This file system contains a collection of poetry." ] + try: + file.write(text) + except Filesystem.GenericError as e: + print(e.reason) + file.activate(adapter) + + # Create a directory called "Coleridge" in the root directory + # + coleridge = DirectoryI(self.communicator(), "Coleridge", root) + coleridge.activate(adapter) + + # Create a file called "Kubla_Khan" in the Coleridge directory + # + file = FileI(self.communicator(), "Kubla_Khan", coleridge) + text = [ "In Xanadu did Kubla Khan", + "A stately pleasure-dome decree:", + "Where Alph, the sacred river, ran", + "Through caverns measureless to man", + "Down to a sunless sea." ] + try: + file.write(text) + except Filesystem.GenericError as e: + print(e.reason) + file.activate(adapter) + + # All objects are created, allow client requests now + # + adapter.activate() + + # Wait until we are done + # + self.communicator().waitForShutdown() + + if self.interrupted(): + print(self.appName() + ": terminating") + + return 0 + +app = Server() +sys.exit(app.main(sys.argv)) |