forked from logzhan/RobotHardware-UESTC
39 lines
945 B
Python
39 lines
945 B
Python
|
from pypibot import log
|
||
|
|
||
|
import threading
|
||
|
import zmq
|
||
|
|
||
|
class MqProxy:
|
||
|
def __init__(self, sub_addr, pub_addr):
|
||
|
self.thd = None
|
||
|
self.sub_addr = sub_addr
|
||
|
self.pub_addr = pub_addr
|
||
|
|
||
|
def _run(self):
|
||
|
context = zmq.Context()
|
||
|
|
||
|
frontend = context.socket(zmq.XSUB)
|
||
|
frontend.bind(self.sub_addr)
|
||
|
# frontend.bind("tcp://*:5556")
|
||
|
backend = context.socket(zmq.XPUB)
|
||
|
backend.bind(self.pub_addr)
|
||
|
# backend.bind("tcp://*:5557")
|
||
|
try:
|
||
|
zmq.proxy(frontend, backend)
|
||
|
except KeyboardInterrupt:
|
||
|
pass
|
||
|
|
||
|
frontend.close()
|
||
|
backend.close()
|
||
|
context.term()
|
||
|
|
||
|
def start(self):
|
||
|
if self.thd is None:
|
||
|
log.i("mq proxy starting...")
|
||
|
self.thd=threading.Thread(target=self._run, name="proxy")
|
||
|
self.thd.setDaemon(True)
|
||
|
self.thd.start()
|
||
|
|
||
|
def stop(self):
|
||
|
pass
|