Exemplo n.º 1
0
    def __init__(self, name, bits, logger, sriCompare, newSriCallback,
                 sriChangeCallback, maxsize):
        self.name = name
        self._portLog = logger
        self.queue = collections.deque()
        self._maxSize = maxsize
        self._breakBlock = False
        self.stats = InStats(name, bits=bits)
        self.blocking = False
        self.sri_cmp = sriCompare
        self.newSriCallback = newSriCallback
        self.sriChangeCallback = sriChangeCallback
        self.sriDict = {}  # key=streamID, value=StreamSRI

        self._dataBufferLock = threading.Lock()
        self._dataAvailable = threading.Condition(self._dataBufferLock)
        self._queueAvailable = threading.Condition(self._dataBufferLock)

        # Backwards-compatibility
        self.port_lock = self._dataBufferLock

        # Synchronizes access to the SRIs
        self._sriUpdateLock = threading.Lock()

        # Streams that are currently active (map of streamID to stream objects)
        self._streams = {}
        self._streamsMutex = threading.Lock()

        # Streams that have the same stream ID as an active stream, when an
        # end-of-stream has been queued but not yet read (each entry in the map
        # is a list of stream objects)
        self._pendingStreams = {}

        if self._portLog is None:
            self._portLog = logging.getLogger("redhawk.bulkio.input." + name)

        _cmpMsg = "DEFAULT"
        _newSriMsg = "EMPTY"
        _sriChangeMsg = "EMPTY"
        if sriCompare != bulkio.sri.compare:
            _cmpMsg = "USER_DEFINED"
        if newSriCallback:
            _newSriMsg = "USER_DEFINED"
        if sriChangeCallback:
            _sriChangeMsg = "USER_DEFINED"

        if self._portLog:
            self._portLog.debug(
                "bulkio::InPort CTOR port:" + str(name) +
                " Blocking/MaxInputQueueSize " + str(self.blocking) + "/" +
                str(maxsize) +
                " SriCompare/NewSriCallback/SriChangeCallback " + _cmpMsg +
                "/" + _newSriMsg + "/" + _sriChangeMsg)
Exemplo n.º 2
0
    def __init__(self,
                 name,
                 logger=None,
                 sriCompare=sri.compare,
                 newSriCallback=None,
                 sriChangeCallback=None,
                 maxsize=100,
                 PortTransferType=_TYPE_):
        self.name = name
        self.logger = logger
        self.queue = collections.deque()
        self._maxSize = maxsize
        self.port_lock = threading.Lock()
        self._not_full = threading.Condition(self.port_lock)
        self._not_empty = threading.Condition(self.port_lock)
        self._breakBlock = False
        self.stats = InStats(name, PortTransferType)
        self.blocking = False
        self.sri_cmp = sriCompare
        self.newSriCallback = newSriCallback
        self.sriChangeCallback = sriChangeCallback
        self.sriDict = {}  # key=streamID, value=StreamSRI

        if logger == None:
            self.logger = logging.getLogger("redhawk.bulkio.input." + name)

        _cmpMsg = "DEFAULT"
        _newSriMsg = "EMPTY"
        _sriChangeMsg = "EMPTY"
        if sriCompare != sri.compare:
            _cmpMsg = "USER_DEFINED"
        if newSriCallback:
            _newSriMsg = "USER_DEFINED"
        if sriChangeCallback:
            _sriChangeMsg = "USER_DEFINED"

        if self.logger:
            self.logger.debug("bulkio::InPort CTOR port:" + str(name) +
                              " Blocking/MaxInputQueueSize " +
                              str(self.blocking) + "/" + str(maxsize) +
                              " SriCompare/NewSriCallback/SriChangeCallback " +
                              _cmpMsg + "/" + _newSriMsg + "/" + _sriChangeMsg)
Exemplo n.º 3
0
 def __init__(self,
              name,
              logger=None,
              attachDetachCallback=None,
              sriCmp=sri.compare,
              timeCmp=timestamp.compare,
              PortType=_TYPE_,
              newSriCallback=None,
              sriChangeCallback=None,
              interface=None):
     self.name = name
     self.logger = logger
     self.port_lock = threading.Lock()
     self.sri_query_lock = threading.Lock()
     self._attachedStreams = {
     }  # key=attach_id, value = (streamDef, userid)
     self.stats = InStats(name, PortType)
     self.sriDict = {}  # key=streamID, value=(StreamSRI, PrecisionUTCTime)
     self.attachDetachCallback = attachDetachCallback
     self.newSriCallback = newSriCallback
     self.sriChangeCallback = sriChangeCallback
     self.sri_cmp = sriCmp
     self.time_cmp = timeCmp
     self.sriChanged = False
     if not interface:
         if self.logger:
             self.logger.error(
                 "InAttachablePort __init__ - an interface must be specified, set to BULKIO.dataSDDS or BULKIO.dataVITA49"
             )
         raise Port.InvalidPort(
             1,
             "InAttachablePort __init__ - an interface must be specified, set to BULKIO.dataSDDS or BULKIO.dataVITA49"
         )
     self.interface = interface  # BULKIO port interface (valid options are BULKIO.dataSDDS or BULKIO.dataVITA49)
     self.setNewAttachDetachListener(attachDetachCallback)
     if self.logger:
         self.logger.debug("bulkio::InAttachablePort CTOR port:" +
                           str(self.name) + " using interface " +
                           str(self.interface))