HelloParent.py &
Note: The server needs to be place in the background with the '&' symbol at the end of the command line.
HelloChild.py "sbh_parent" &
3. To run the client type:
HelloClient.py "sbh_of_child" &
Note: remember to place double quotes around the binding_handle.
The client should print "Hello Stanford DL project!", "my hello!!", and exit. The servers will continue to wait and process new hello messages.
INTERFACE HelloObject; TYPE Hello = OBJECT OPTIONAL METHODS hello () : ilu.CString END; TYPE MyHello = OBJECT OPTIONAL SUPERTYPES Hello END METHODS myhello() : ilu.CString END;
#!/usr/local/bin/python # # # HelloParent.py # # This is the parent object to HelloChild.py. It implements the # Hello root class and the method 'hello'. # # This program displays its SBH. You will need to give this string # as input to HelloChild.py. # import os, socket, sys, ilu, HelloObject__skel class Hello(HelloObject__skel.Hello): def hello(self): return "Hello Stanford DL Project!"; def main(argv): server = ilu.CreateServer(None, None, None); mach = Hello() print mach.IluSBH() ilu.RunMainLoop() main(sys.argv)
#!/usr/local/bin/python # # # HelloChild.py # # This is the child object to HelloParent.py. It implements the # MyHello child class and the method 'myhello'. It passes the # method 'hello' up to its parent class instance. # # The first parameter to this program is the SBH of the parent object # server instance. First start of the parent instance, copy the SBH # that is displayed, and run this server with that string as the first # parameter. # # This program displays its SBH. You will need to give this string # as input to the client program HelloClient.py. # import os, socket, sys, ilu import HelloObject, HelloObject__skel # # define the MyHello child class # class MyHello(HelloObject__skel.MyHello): # set the parent reference up. def __init__(self, pParent): self.fParent = pParent # call the parent method def hello(self): return self.fParent.hello() # define the myhello method def myhello(self): return "my hello!!" def main(argc, argv): if(argc != 2): print "usage: HelloChild.py" sys.exit(1) parent_sbh = sys.argv[1] parent = ilu.ObjectOfSBH(HelloObject.Hello, parent_sbh) server = ilu.CreateServer(None, None, None); mach = MyHello(parent) print mach.IluSBH() ilu.RunMainLoop() main(len(sys.argv), sys.argv)
#!/usr/local/bin/python # # # HelloClient.py # # This is the client object to HelloChild.py. It will first create the # surrogate of MyHello, call the hello method, and then try to call # the myhello method on it. # # The first parameter to this program is the SBH of the child server object # server instance. First start of the child server instance, copy the SBH # that is displayed, and run this client with that string as the first # parameter. # import os, sys, ilu, HelloObject if(len(sys.argv) != 2): print "usage: HelloClient.py" sys.exit(1) sbh = sys.argv[1] # try to create an object of type MyHello HelloObjectInstance = ilu.ObjectOfSBH(HelloObject.MyHello, sbh) # try to call the hello method on MyHello print HelloObjectInstance.hello() # try to call the myhello method on MyHello try: print HelloObjectInstance.myhello() except: print "myHello() not supported!"
NormalObjectRule() DependTarget() InterfaceTarget(HelloObject.isl) #ifdef ADD_PYTHON_LANGUAGE ILUPythonTarget(HelloObject.py HelloObject__skel.py, HelloObject.isl) all:: HelloObject.py HelloObject__skel.py #endif