def __init__(self, factory, endpoint=None, identity=None): """ Constructor. One endpoint is passed to the constructor, more could be added via call to :meth:`addEndpoints`. :param factory: ZeroMQ Twisted factory :type factory: :class:`ZmqFactory` :param endpoint: ZeroMQ address for connect/bind :type endpoint: :class:`ZmqEndpoint` :param identity: socket identity (ZeroMQ), don't set unless you know how it works :type identity: str """ self.factory = factory self.endpoints = [] self.identity = identity self.socket = Socket(factory.context, self.socketType) self.queue = deque() self.recv_parts = [] self.read_scheduled = None self.fd = self.socket.get(constants.FD) self.socket.set(constants.LINGER, factory.lingerPeriod) if not ZMQ3: self.socket.set(constants.MCAST_LOOP, int(self.allowLoopbackMulticast)) self.socket.set(constants.RATE, self.multicastRate) if not ZMQ3: self.socket.set(constants.HWM, self.highWaterMark) else: self.socket.set(constants.SNDHWM, self.highWaterMark) self.socket.set(constants.RCVHWM, self.highWaterMark) if ZMQ3 and self.tcpKeepalive: self.socket.set(constants.TCP_KEEPALIVE, self.tcpKeepalive) self.socket.set(constants.TCP_KEEPALIVE_CNT, self.tcpKeepaliveCount) self.socket.set(constants.TCP_KEEPALIVE_IDLE, self.tcpKeepaliveIdle) self.socket.set(constants.TCP_KEEPALIVE_INTVL, self.tcpKeepaliveInterval) if self.identity is not None: self.socket.set(constants.IDENTITY, self.identity) if endpoint: self.addEndpoints([endpoint]) self.factory.connections.add(self) self.factory.reactor.addReader(self) self.doRead()
def __init__(self, endpoints, identity=None, **kwargs): """ Constructor. :param factory: ZeroMQ Twisted factory :type factory: :class:`ZmqFactory` :param identity: socket identity (ZeroMQ), don't set unless you know how it works :type identity: str """ super(ZmqConnection, self).__init__() self.factory = ZmqContextManager() self.endpoints = [] self.identity = identity self.socket = Socket(self.factory.context, self.socketType) self.queue = deque() self.recv_parts = [] self.read_scheduled = None self.shutted_down = False self.pickles_compression = "snappy" self._last_read_time = 0.0 self.fd = self.socket.get(constants.FD) self.socket.set(constants.LINGER, self.factory.lingerPeriod) self.socket.set(constants.RATE, self.multicastRate) self.socket.set(constants.SNDHWM, self.highWaterMark) self.socket.set(constants.RCVHWM, self.highWaterMark) if ZMQ3 and self.tcpKeepalive: self.socket.set( constants.TCP_KEEPALIVE, self.tcpKeepalive) self.socket.set( constants.TCP_KEEPALIVE_CNT, self.tcpKeepaliveCount) self.socket.set( constants.TCP_KEEPALIVE_IDLE, self.tcpKeepaliveIdle) self.socket.set( constants.TCP_KEEPALIVE_INTVL, self.tcpKeepaliveInterval) if self.identity is not None: self.socket.set(constants.IDENTITY, self.identity) self.endpoints = endpoints self.rnd_vals = self._connectOrBind(endpoints) self.factory.connections.add(self) self.factory.reactor.addReader(self) self.doRead()