equal
deleted
inserted
replaced
60 pyro_obj.delegateTo(runtime.GetPLCObjectSingleton()) |
60 pyro_obj.delegateTo(runtime.GetPLCObjectSingleton()) |
61 |
61 |
62 self.daemon.connect(pyro_obj, "PLCObject") |
62 self.daemon.connect(pyro_obj, "PLCObject") |
63 |
63 |
64 when_ready() |
64 when_ready() |
65 self.piper, self.pipew = os.pipe() |
65 |
66 self.daemon.requestLoop(others=[self.piper], callback=lambda x: None) |
66 # "pipe to self" trick to to accelerate runtime shutdown |
|
67 # instead of waiting for arbitrary pyro timeout. |
|
68 others = [] |
|
69 if not sys.platform.startswith('win'): |
|
70 self.piper, self.pipew = os.pipe() |
|
71 others.append = self.piper |
|
72 |
|
73 self.daemon.requestLoop(others=others, callback=lambda x: None) |
67 self.piper, self.pipew = None, None |
74 self.piper, self.pipew = None, None |
68 if hasattr(self, 'sock'): |
75 if hasattr(self, 'sock'): |
69 self.daemon.sock.close() |
76 self.daemon.sock.close() |
70 self.Unpublish() |
77 self.Unpublish() |
71 |
78 |
74 |
81 |
75 def Quit(self): |
82 def Quit(self): |
76 self.continueloop = False |
83 self.continueloop = False |
77 self.daemon.shutdown(True) |
84 self.daemon.shutdown(True) |
78 self.daemon.closedown() |
85 self.daemon.closedown() |
79 if self.pipew is not None: |
86 if not sys.platform.startswith('win'): |
80 os.write(self.pipew, "goodbye") |
87 if self.pipew is not None: |
|
88 os.write(self.pipew, "goodbye") |
81 |
89 |
82 def Publish(self): |
90 def Publish(self): |
83 self.servicepublisher = ServicePublisher("PYRO") |
91 self.servicepublisher = ServicePublisher("PYRO") |
84 self.servicepublisher.RegisterService(self.servicename, |
92 self.servicepublisher.RegisterService(self.servicename, |
85 self.ip_addr, self.port) |
93 self.ip_addr, self.port) |