Source code for riaps.run.subPort

'''
Created on Oct 10, 2016

@author: riaps
'''
import zmq
import time
import struct
from .port import Port,PortScope,PortInfo,SimplexConnPort
from riaps.run.exc import OperationError
try:
    import cPickle
    pickle = cPickle
except:
    cPickle = None
    import pickle


[docs]class SubPort(SimplexConnPort): ''' Subscriber port ''' def __init__(self, parentComponent, portName, portSpec): ''' Constructor ''' super().__init__(parentComponent, portName, portSpec) # self.pubs = set()
[docs] def setup(self): pass
[docs] def setupSocket(self, owner): return self.setupConnSocket(owner,zmq.SUB,'sub',[(zmq.SUBSCRIBE,'')])
# self.setOwner(owner) # self.socket = self.context.socket(zmq.SUB) # self.socket.setsockopt_string(zmq.SUBSCRIBE, '') # self.setupCurve(False) # self.host = '' # if self.portKind == PortKind.GLOBAL: # globalHost = self.getGlobalIface() # self.portNum = -1 # self.host = globalHost # else: # localHost = self.getLocalIface() # self.portNum = -1 # self.host = localHost # self.info = PortInfo(portType='sub', portKind=self.portKind, portName=self.name, # msgType=self.type, host=self.host, portNum=self.portNum) # return self.info
[docs] def closeSocket(self): self.closeConnSocket()
[docs] def reset(self): self.resetConnSocket(zmq.SUB,[(zmq.SUBSCRIBE,'')])
[docs] def getSocket(self): return self.socket
[docs] def inSocket(self): return True
# def update(self, host, port): # if (host,port) not in self.pubs: # pubPort = "tcp://" + str(host) + ":" + str(port) # self.pubs.add((host, port)) # self.socket.connect(pubPort)
[docs] def recv_pyobj(self): return self.port_recv(True)
[docs] def send_pyobj(self, msg): raise OperationError("attempt to send through a subscriber port")
[docs] def recv(self): return self.port_recv(False)
[docs] def send(self, _msg): raise OperationError("attempt to send through a subscriber port")
[docs] def getInfo(self): return self.info