Salome HOME
Copyrights update 2015.
[modules/yacs.git] / src / runtime / Test / xmlrun_orig.sh
1 #!/usr/bin/env python
2 # Copyright (C) 2006-2015  CEA/DEN, EDF R&D
3 #
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.
8 #
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.
13 #
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
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20
21 import xmlrpclib,sys
22
23 data="""
24 <methodCall>
25   <methodName>echo</methodName>
26   <params>
27     <param><value>hello, world</value></param>
28     <param><value><double>3.5</double></value></param>
29     <param><value><string>coucou</string></value></param>
30   </params>
31 </methodCall>
32 """
33 def echo(args):
34   print args
35   return args
36
37 f=open("input")
38 data=f.read()
39 f.close()
40 print data
41
42 class Objref:
43   """Wrapper for objrefs """
44   def __init__(self,data=None):
45     self.data=data
46   def __str__(self):
47     return self.data or ""
48   def __cmp__(self, other):
49     if isinstance(other, Binary):
50       other = other.data
51     return cmp(self.data, other)
52
53   def decode(self, data):
54     self.data = data
55
56   def encode(self, out):
57     out.write("<value><objref>")
58     out.write(self.data or "")
59     out.write("</objref></value>\n")
60
61 xmlrpclib.WRAPPERS=xmlrpclib.WRAPPERS+(Objref,)
62
63 def end_objref(self,data):
64   self.append(Objref(data))
65   self._value=0
66
67 xmlrpclib.Unmarshaller.end_objref=end_objref
68 xmlrpclib.Unmarshaller.dispatch["objref"]=end_objref
69
70 params, method = xmlrpclib.loads(data)
71
72 try:
73    call=eval(method)
74    response=call(params)
75    response = (response,)
76 except:
77    # report exception back to server
78    response = xmlrpclib.dumps( xmlrpclib.Fault(1, "%s:%s" % sys.exc_info()[:2]))
79 else:
80    response = xmlrpclib.dumps( response, methodresponse=1)
81
82 print response
83 f=open("output",'w')
84 f.write(response)
85 f.close()