def open(self, af): if self.type in ('mq', 'easymq'): # mesage queue , as qpid from conn_easymq import RpcConnectionEasyMQ self.impl = RpcConnectionEasyMQ(self) elif self.type == EP_NAMES[QPIDMQ]: from conn_qpid import RpcConnectionQpidMQ self.impl = RpcConnectionQpidMQ(self) elif self.type == EP_NAMES[SOCKET]: from conn_socket import RpcConnectionSocket self.impl = RpcConnectionSocket(ep=self) elif self.type == EP_NAMES[WEBSOCKET]: from conn_websocket import RpcConnectionWebSocket self.impl = RpcConnectionWebSocket(ep=self) else: log_error('just support MQ type! error ep:%s %s %s' % (self.name, self.addr, self.type)) return False # print str(self) #socket/websocket时,此刻的connection其实是个伪连接,只是保存endpoint之用,真实的操作在socketAdapter的start() #如果是消息队列连接,则即刻打开读/写连接 if self.type in (EP_NAMES[MQ], EP_NAMES[EASYMQ], EP_NAMES[QPIDMQ], EP_NAMES[ZMQ]): return self.impl.open(af=af) return True