2 # Copyright (C) 2006-2021 CEA/DEN, EDF R&D
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 import xmlrpc.client,sys
26 <methodName>echo</methodName>
28 <param><value>hello, world</value></param>
29 <param><value><double>3.5</double></value></param>
30 <param><value><string>coucou</string></value></param>
43 with open("input",'r') as f:
48 """Wrapper for objrefs """
49 def __init__(self,data=None):
52 return self.data or ""
54 # __cmp__ is not defined in Python 3 : strict ordering
55 def __le__(self, other):
56 if isinstance(other, Binary):
58 return self.data <= other
59 def __lt__(self, other):
60 if isinstance(other, Binary):
62 return self.data < other
63 def __ge__(self, other):
64 if isinstance(other, Binary):
66 return self.data >= other
67 def __gt__(self, other):
68 if isinstance(other, Binary):
70 return self.data > other
71 def __eq__(self, other):
72 if isinstance(other, Binary):
74 return self.data == other
75 def __ne__(self, other):
76 if isinstance(other, Binary):
78 return self.data != other
80 def decode(self, data):
83 def encode(self, out):
84 out.write("<value><objref>")
85 out.write(self.data or "")
86 out.write("</objref></value>\n")
88 xmlrpc.client.WRAPPERS=xmlrpc.client.WRAPPERS+(Objref,)
90 def end_objref(self,data):
91 self.append(Objref(data))
94 xmlrpc.client.Unmarshaller.end_objref=end_objref
95 xmlrpc.client.Unmarshaller.dispatch["objref"]=end_objref
97 params, method = xmlrpc.client.loads(data)
101 response=call(params)
102 response = (response,)
104 # report exception back to server
105 response = xmlrpc.client.dumps( xmlrpc.client.Fault(1, "%s:%s" % sys.exc_info()[:2]))
107 response = xmlrpc.client.dumps( response, methodresponse=1)
110 with open("output",'w') as f: