summaryrefslogtreecommitdiff
path: root/py/demo/Ice/properties/Client.py
diff options
context:
space:
mode:
Diffstat (limited to 'py/demo/Ice/properties/Client.py')
-rw-r--r--py/demo/Ice/properties/Client.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/py/demo/Ice/properties/Client.py b/py/demo/Ice/properties/Client.py
new file mode 100644
index 00000000000..4a197cd8f19
--- /dev/null
+++ b/py/demo/Ice/properties/Client.py
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2012 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
+
+slice_dir = Ice.getSliceDir()
+if not slice_dir:
+ print(sys.argv[0] + ': Slice directory not found.')
+ sys.exit(1)
+
+Ice.loadSlice("'-I" + slice_dir + "' Props.ice")
+import Demo
+
+def menu():
+ print("""
+usage:
+1: set properties (batch 1)
+2: set properties (batch 2)
+c: show current properties
+s: shutdown server
+x: exit
+?: help
+""")
+
+def show(admin):
+ props = admin.getPropertiesForPrefix("Demo")
+ print "Server's current settings:"
+ for k,v in props.items():
+ print " " + k + "=" + v
+
+class Client(Ice.Application):
+ def run(self, args):
+ if len(args) > 1:
+ print(self.appName() + ": too many arguments")
+ return 1
+
+ props = Demo.PropsPrx.checkedCast(self.communicator().propertyToProxy("Props.Proxy"))
+ if props == None:
+ print("invalid proxy")
+ return 1
+
+ admin = Ice.PropertiesAdminPrx.checkedCast(self.communicator().propertyToProxy("Admin.Proxy"))
+
+ batch1 = {}
+ batch1["Demo.Prop1"] = "1"
+ batch1["Demo.Prop2"] = "2"
+ batch1["Demo.Prop3"] = "3"
+
+ batch2 = {}
+ batch2["Demo.Prop1"] = "10"
+ batch2["Demo.Prop2"] = "" # An empty value removes this property
+ batch2["Demo.Prop3"] = "30"
+
+ show(admin)
+ menu()
+
+ c = None
+ while c != 'x':
+ try:
+ sys.stdout.write("==> ")
+ sys.stdout.flush()
+ c = sys.stdin.readline().strip()
+ if c == "1" or c == "2":
+ propsDict = c == "1" and batch1 or batch2
+ print("Sending:")
+ for k, v in propsDict.items():
+ if k.startswith("Demo"):
+ print(" " + k + "=" + v)
+ print
+
+ admin.setProperties(propsDict)
+
+ print("Changes:")
+ changes = props.getChanges()
+ if len(changes) == 0:
+ print(" None.")
+ else:
+ for k, v in changes.items():
+ sys.stdout.write(" " + k)
+ if len(v) == 0:
+ print(" was removed")
+ else:
+ print(" is now " + v)
+ elif c == "c":
+ show(admin)
+ elif c == "s":
+ props.shutdown()
+ elif c == "x":
+ # Nothing to do
+ pass
+ elif c == "?":
+ menu()
+ else:
+ print("unknown command `" + c + "'")
+ menu()
+ except KeyboardInterrupt:
+ break
+ except EOFError:
+ break
+ except Ice.Exception as ex:
+ print(ex)
+
+ return 0
+
+app = Client()
+sys.exit(app.main(sys.argv, "config.client"))