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