diff options
author | Mark Spruiell <mes@zeroc.com> | 2005-06-02 12:17:00 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2005-06-02 12:17:00 +0000 |
commit | e22ac16e2f56f898b14f09e8a6c9f78fbaa95d21 (patch) | |
tree | 11552443a5907516c60e215e5974f4d25b181a92 /py/demo/Ice/value/Client.py | |
parent | Fixed bug 258, 347, 352 (diff) | |
download | ice-e22ac16e2f56f898b14f09e8a6c9f78fbaa95d21.tar.bz2 ice-e22ac16e2f56f898b14f09e8a6c9f78fbaa95d21.tar.xz ice-e22ac16e2f56f898b14f09e8a6c9f78fbaa95d21.zip |
align with C++
Diffstat (limited to 'py/demo/Ice/value/Client.py')
-rw-r--r-- | py/demo/Ice/value/Client.py | 297 |
1 files changed, 141 insertions, 156 deletions
diff --git a/py/demo/Ice/value/Client.py b/py/demo/Ice/value/Client.py index 0bf0c6fc474..a702095d55d 100644 --- a/py/demo/Ice/value/Client.py +++ b/py/demo/Ice/value/Client.py @@ -27,159 +27,144 @@ class ObjectFactory(Ice.ObjectFactory): # Nothing to do pass -def run(args, communicator): - properties = communicator.getProperties() - refProperty = 'Value.Initial' - proxy = properties.getProperty(refProperty) - if len(proxy) == 0: - print args[0] + ": property `" + refProperty + "' not set" - return False - - base = communicator.stringToProxy(proxy) - initial = Demo.InitialPrx.checkedCast(base) - if not initial: - print args[0] + ": invalid proxy" - return False - - print '\n'\ - "Let's first transfer a simple object, for a class without\n"\ - "operations, and print its contents. No factory is required\n"\ - "for this.\n"\ - "[press enter]" - raw_input() - - simple = initial.getSimple() - print "==> " + simple.message - - print '\n'\ - "Ok, this worked. Now let's try to transfer an object for a class\n"\ - "with operations as type ::Ice::Object. Because no factory is installed,\n"\ - "the class will be sliced to ::Ice::Object.\n"\ - "[press enter]" - raw_input() - - obj = initial.getPrinterAsObject() - print "==> The type ID of the received object is \"" + obj.ice_id() + "\"" - assert(obj.ice_id() == "::Ice::Object") - - print '\n'\ - "Yes, this worked. Now let's try to transfer an object for a class\n"\ - "with operations as type ::Demo::Printer, without installing a factory\n"\ - "first. This should give us a `no factory' exception.\n"\ - "[press enter]" - raw_input() - - try: - printer, printerProxy = initial.getPrinter() - print args[0] + "Did not get the expected NoObjectFactoryException!" - sys.exit(false) - except Ice.NoObjectFactoryException, ex: - print "==>", ex - - print '\n'\ - "Yep, that's what we expected. Now let's try again, but with\n"\ - "installing an appropriate factory first. If successful, we print\n"\ - "the object's content.\n"\ - "[press enter]" - raw_input() - - factory = ObjectFactory() - communicator.addObjectFactory(factory, "::Demo::Printer") - - printer, printerProxy = initial.getPrinter() - print "==> " + printer.message - - print '\n'\ - "Cool, it worked! Let's try calling the printBackwards() method\n"\ - "on the object we just received locally.\n"\ - "[press enter]" - raw_input() - - print "==>", - printer.printBackwards() - - print '\n'\ - "Now we call the same method, but on the remote object. Watch the\n"\ - "server's output.\n"\ - "[press enter]" - raw_input() - - printerProxy.printBackwards() - - print '\n'\ - "Next, we transfer a derived object from the server as a base\n"\ - "object. Since we haven't yet installed a factory for the derived\n"\ - "class, the derived class (::Demo::DerivedPrinter) is sliced\n"\ - "to its base class (::Demo::Printer).\n"\ - "[press enter]" - raw_input() - - derivedAsBase = initial.getDerivedPrinter() - print "==> The type ID of the received object is \"" + derivedAsBase.ice_id() + "\"" - assert(derivedAsBase.ice_id() == "::Demo::Printer") - - print '\n'\ - "Now we install a factory for the derived class, and try again.\n"\ - "Because we receive the derived object as a base object, we\n"\ - "we need to do a dynamic_cast<> to get from the base to the derived object.\n"\ - "[press enter]" - raw_input() - - communicator.addObjectFactory(factory, "::Demo::DerivedPrinter") - - derived = initial.getDerivedPrinter() - print "==> The type ID of the received object is \"" + derived.ice_id() + "\"" - - print '\n'\ - "Let's print the message contained in the derived object, and\n"\ - "call the operation printUppercase() on the derived object\n"\ - "locally.\n"\ - "[press enter]" - raw_input() - - print "==> " + derived.derivedMessage - print "==>", - derived.printUppercase() - - print '\n'\ - "Finally, we try the same again, but instead of returning the\n"\ - "derived object, we throw an exception containing the derived\n"\ - "object.\n"\ - "[press enter]" - raw_input() - - try: - initial.throwDerivedPrinter() - print args[0] + "Did not get the expected DerivedPrinterException!" - sys.exit(false) - except Demo.DerivedPrinterException, ex: - derived = ex.derived - assert(derived) - - print "==> " + derived.derivedMessage - print "==>", - derived.printUppercase() - - print '\n'\ - "That's it for this demo. Have fun with Ice!" - - return True - -communicator = None -try: - properties = Ice.createProperties() - properties.load("config") - communicator = Ice.initializeWithProperties(sys.argv, properties) - status = run(sys.argv, communicator) -except: - traceback.print_exc() - status = False - -if communicator: - try: - communicator.destroy() - except: - traceback.print_exc() - status = False - -sys.exit(not status) +class Client(Ice.Application): + def run(self, args): + properties = self.communicator().getProperties() + refProperty = 'Value.Initial' + proxy = properties.getProperty(refProperty) + if len(proxy) == 0: + print args[0] + ": property `" + refProperty + "' not set" + return False + + base = self.communicator().stringToProxy(proxy) + initial = Demo.InitialPrx.checkedCast(base) + if not initial: + print args[0] + ": invalid proxy" + return False + + print '\n'\ + "Let's first transfer a simple object, for a class without\n"\ + "operations, and print its contents. No factory is required\n"\ + "for this.\n"\ + "[press enter]" + raw_input() + + simple = initial.getSimple() + print "==> " + simple.message + + print '\n'\ + "Ok, this worked. Now let's try to transfer an object for a class\n"\ + "with operations as type ::Ice::Object. Because no factory is installed,\n"\ + "the class will be sliced to ::Ice::Object.\n"\ + "[press enter]" + raw_input() + + obj = initial.getPrinterAsObject() + print "==> The type ID of the received object is \"" + obj.ice_id() + "\"" + assert(obj.ice_id() == "::Ice::Object") + + print '\n'\ + "Yes, this worked. Now let's try to transfer an object for a class\n"\ + "with operations as type ::Demo::Printer, without installing a factory\n"\ + "first. This should give us a `no factory' exception.\n"\ + "[press enter]" + raw_input() + + try: + printer, printerProxy = initial.getPrinter() + print args[0] + ": Did not get the expected NoObjectFactoryException!" + sys.exit(false) + except Ice.NoObjectFactoryException, ex: + print "==>", ex + + print '\n'\ + "Yep, that's what we expected. Now let's try again, but with\n"\ + "installing an appropriate factory first. If successful, we print\n"\ + "the object's content.\n"\ + "[press enter]" + raw_input() + + factory = ObjectFactory() + self.communicator().addObjectFactory(factory, "::Demo::Printer") + + printer, printerProxy = initial.getPrinter() + print "==> " + printer.message + + print '\n'\ + "Cool, it worked! Let's try calling the printBackwards() method\n"\ + "on the object we just received locally.\n"\ + "[press enter]" + raw_input() + + print "==>", + printer.printBackwards() + + print '\n'\ + "Now we call the same method, but on the remote object. Watch the\n"\ + "server's output.\n"\ + "[press enter]" + raw_input() + + printerProxy.printBackwards() + + print '\n'\ + "Next, we transfer a derived object from the server as a base\n"\ + "object. Since we haven't yet installed a factory for the derived\n"\ + "class, the derived class (::Demo::DerivedPrinter) is sliced\n"\ + "to its base class (::Demo::Printer).\n"\ + "[press enter]" + raw_input() + + derivedAsBase = initial.getDerivedPrinter() + print "==> The type ID of the received object is \"" + derivedAsBase.ice_id() + "\"" + assert(derivedAsBase.ice_id() == "::Demo::Printer") + + print '\n'\ + "Now we install a factory for the derived class, and try again.\n"\ + "Because we receive the derived object as a base object, we\n"\ + "we need to do a dynamic_cast<> to get from the base to the derived object.\n"\ + "[press enter]" + raw_input() + + self.communicator().addObjectFactory(factory, "::Demo::DerivedPrinter") + + derived = initial.getDerivedPrinter() + print "==> The type ID of the received object is \"" + derived.ice_id() + "\"" + + print '\n'\ + "Let's print the message contained in the derived object, and\n"\ + "call the operation printUppercase() on the derived object\n"\ + "locally.\n"\ + "[press enter]" + raw_input() + + print "==> " + derived.derivedMessage + print "==>", + derived.printUppercase() + + print '\n'\ + "Finally, we try the same again, but instead of returning the\n"\ + "derived object, we throw an exception containing the derived\n"\ + "object.\n"\ + "[press enter]" + raw_input() + + try: + initial.throwDerivedPrinter() + print args[0] + "Did not get the expected DerivedPrinterException!" + sys.exit(false) + except Demo.DerivedPrinterException, ex: + derived = ex.derived + assert(derived) + + print "==> " + derived.derivedMessage + print "==>", + derived.printUppercase() + + print '\n'\ + "That's it for this demo. Have fun with Ice!" + + return True + +app = Client() +sys.exit(app.main(sys.argv, "config")) |