'''
Created on Sep 18, 2020
@author: esdev
'''
import zmq
from slacm.port import BiPort
[docs]
class QueryPort(BiPort):
'''
Query port
'''
def __init__(self, parent, name, spec):
super().__init__(parent,name,spec)
self.logger.info('QueryPort.__init__(%s)',name)
self.instName = self.parent.name + '.' + self.name
# parentActor = parentComponent.parent
[docs]
def setup(self,owner,disco):
self.owner = owner
self.socket = self.context.socket(zmq.DEALER)
macAddress = self.netInfo.macAddress
self.__identity = '%s.%s' % (str(macAddress),str(id(self)))
self.socket.setsockopt_string(zmq.IDENTITY, self.__identity, 'utf-8')
# self.socket.setsockopt(zmq.SNDTIMEO,self.sendTimeout)
# self.socket.setsockopt(zmq.RCVTIMEO,self.recvTimeout)
if not self.isLocalPort:
self.host = self.netInfo.globalHost
else:
self.host = self.netInfo.localHost
[docs]
def finalize(self,disco):
key = self.formKey()
value = disco.get(key)
if value is not None:
endPoint = "tcp://" + value
self.socket.connect(endPoint)
else:
self.logger.warning('QueryPort.finalize() %s - source port lookup failed' % self.instName)
[docs]
def inSocket(self):
return True