<p>Notify Remote Consumer Dispatchers consumers on the RME for this destination
of the change to the receive exclusive attribute</p>

@param isReceiveExclusive
18052
@Override
    public void notifyRCDReceiveExclusiveChange(boolean isReceiveExclusive)
    {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(tc, "notifyRCDReceiveExclusiveChange", new Object[] { Boolean.valueOf(isReceiveExclusive) });

        // Only do this for ptp as it does not seem to make sense for p/s
        if (!isPubSub())
        {
            //if this is a RMQ destination then there is no RCD to
            //worry about, so we only need be concerned with the case of a JS
            //q point.
            if (_ptoPRealization != null)
            {
                _ptoPRealization.getRemoteSupport().
                                notifyRCDReceiveExclusiveChange(isReceiveExclusive);
            }

        }
        else
        {
            // sanity check
            // log error
            SIErrorException e =
                            new SIErrorException(
                                            nls.getFormattedMessage(
                                                                    "INTERNAL_MESSAGING_ERROR_CWSIP0001",
                                                                    new Object[] {
                                                                                  "com.ibm.ws.sib.processor.impl.BaseDestinationHandler",
                                                                                  "1:1458:1.700.3.45" },
                                                                    null));
            FFDCFilter.processException(
                                        e,
                                        "com.ibm.ws.sib.processor.impl.BaseDestinationHandler.notifyRCDReceiveExclusiveChange",
                                        "1:1463:1.700.3.45",
                                        this);
            SibTr.exception(tc, e);

            SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0001",
                        new Object[] {
                                      "com.ibm.ws.sib.processor.impl.BaseDestinationHandler",
                                      "1:1470:1.700.3.45" });

            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                SibTr.exit(tc, "notifyRCDReceiveExclusiveChange", e);
        }

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "notifyRCDReceiveExclusiveChange");
    }
768627
private void fireFrameReceived(final KnxTunnelEmi emiType, final byte[] frame) throws KNXFormatException
	{
		logger.debug("received {} frame {}", emiType, DataUnitBuilder.toHex(frame, ""));
		final FrameEvent fe = emiType == KnxTunnelEmi.CEmi
				? new FrameEvent(this, CEMIFactory.create(frame, 0, frame.length)) : new FrameEvent(this, frame);
		listeners.fire(l -> l.frameReceived(fe));
	}
1368138
public void updateDefinition(BaseDestinationDefinition destinationDefinition)
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.entry(tc, "updateDefinition", new Object[] {destinationDefinition});
      
    DestinationDefinition oldDefinition = definition;
    DestinationDefinition newDefinition = (DestinationDefinition) destinationDefinition;
      
    // Reset values to force a reload on first reference
    _maxFailedDeliveries = -1;
    _blockedRetryInterval = -1;
    
    if (!isPubSub() && ((oldDefinition == null) ||
        (oldDefinition.isReceiveExclusive() != newDefinition.isReceiveExclusive())))
    {
      // notify the AnycastOutputHandler, *before* throwing off all consumers. 
      // If this is not done, AnycastOutputHandler could
      // create a new consumer before knowing the change in the receiveExclusive value which is not good!
      notifyAOHReceiveExclusiveChange(newDefinition.isReceiveExclusive());

      //throw off all consumers attached through this destination
      ConsumerDispatcher cm = (ConsumerDispatcher)getLocalPtoPConsumerManager();
      if (cm != null)
      {
        cm.closeAllConsumersForReceiveExclusive();
      }
      
      // notify the RME RemoteConsumerDispatchers that the receiveExlusive value has changed
      notifyRCDReceiveExclusiveChange(newDefinition.isReceiveExclusive());
    }
    
    // definition must be updated before notifying consumer dispatcher(s) of update 
    definition = (DestinationDefinition) destinationDefinition;           

    if ((oldDefinition == null) ||
        (oldDefinition.isReceiveAllowed() != newDefinition.isReceiveAllowed()))
    {    
      _isReceiveAllowed = newDefinition.isReceiveAllowed();
      
      notifyReceiveAllowed(this);
      
      //Tell any aliases that inherit the receive allowed value from this
      //destination that the value has changed.
      notifyTargettingAliasesReceiveAllowed();

    }    
    
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.exit(tc, "updateDefinition");
  }
840199
public Message receiveRemoteMessage() throws RemoteException
    {
        Utility.getLogger().info("EJB receiveMessage (waiting)");
        Message message = this.getMessageStack().receiveMessage();
        Utility.getLogger().info("EJB receiveMessage (returning) " + message);
        return message;
    }
1181928
void onSealExclusive(Batch batch, long elapsedTimeMillis)
  {
    batchFillingTimeCounter.add((int) Math.max(elapsedTimeMillis, 0));
    if (elapsedTimeMillis > 0) {
      // If elapsedTimeMillis is 0 or negative, it's likely because System.currentTimeMillis() is not monotonic, so not
      // accounting this time for determining batch sending timeout.
      lastFillTimeMillis = elapsedTimeMillis;
    }
    addBatchToEmitQueue(batch);
    wakeUpEmittingThread();
    if (!isTerminated()) {
      int nextBatchNumber = EmittedBatchCounter.nextBatchNumber(batch.batchNumber);
      if (!concurrentBatch.compareAndSet(batch, new Batch(this, acquireBuffer(), nextBatchNumber))) {
        // If compareAndSet failed, the service is closed concurrently.
        Preconditions.checkState(isTerminated());
      }
    }
  }
808230
protected void remoteToLocalPutSilence(MessageItem msgItem) throws SIResourceException
    {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(
                        tc,
                        "remoteToLocalPutSilence",
                        new Object[] { msgItem });

        // Write Silence to the targetStream instead
        // If the targetStream does not exist this will just return     
        _targetStreamManager.handleSilence(msgItem);

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "remoteToLocalPutSilence");
    }
594180
private synchronized void setReceiveAllowed(DestinationAliasDefinition aliasDefinition)
    {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(tc, "setReceiveAllowed", aliasDefinition);

        ExtendedBoolean aliasIsReceiveAllowed = aliasDefinition.isReceiveAllowed();
        // A reliability of NONE signals use target value.
        if (aliasIsReceiveAllowed.equals(ExtendedBoolean.NONE))
            _isReceiveAllowed = getTarget().isReceiveAllowed();
        else if (aliasIsReceiveAllowed.equals(ExtendedBoolean.FALSE))
            _isReceiveAllowed = false;
        else
            _isReceiveAllowed = true;

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "setReceiveAllowed", Boolean.valueOf(_isReceiveAllowed));
    }
1026724
public synchronized void onReceive(final Packet packet, final Client client) throws IOException
    {
        if (globalHandler != null) globalHandler.onReceive(packet, client);

        final PacketHandler packetHandler = registry.get(packet.getPacketID());
        if (packetHandler == null)
        {
            if (defaultHandler != null) defaultHandler.handlePacket(packet, client);
        }
        else packetHandler.handlePacket(packet, client);
    }
690482
@Override
	protected final AbstractMessage receiveFromDestination(long timeout, boolean duplicateRequired) throws JMSException
    {
        if (closed)
            return null; // [JMS SPEC]

        // Get something from preftech queue
        return getFromPrefetchQueue(timeout);
    }
580329
public void eventUnlocked() throws SevereMessageStoreException
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.entry(tc, "eventUnlocked");

    // modify prefetching info
    synchronized (this)
    {
      RemoteDispatchableKey dkey = key.getRemoteDispatchableKey();
      RemoteQPConsumerKey ck = null;
      if (dkey instanceof RemoteQPConsumerKey)
        ck = (RemoteQPConsumerKey) dkey;

      if (ck != null)
      {
        ck.messageUnlocked(key);
        informedConsumerKeyThatLocked = false;
      }
    }
    
    isReserved = false; // msg is no longer reserved for a particular consumer

    // Set the RMEUnlockCount for this msg's valueTick
    if (incLockCount)
      aih.incrementUnlockCount(getMessage().getGuaranteedRemoteGetValueTick());
    incLockCount = false;
    
    // call superclass
    super.eventUnlocked();

    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.exit(tc, "eventUnlocked");
  }
1158767
public boolean isReceiveAllowed()
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
    {    
      SibTr.entry(tc, "isReceiveAllowed");  
      SibTr.exit(tc, "isReceiveAllowed", Boolean.valueOf(_isReceiveAllowed));
    }       
    return _isReceiveAllowed;                       
  }
318255
public void notifyTargettingAliasesReceiveAllowed()
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.entry(tc, "notifyTargettingAliasesReceiveAllowed");

    //Tell any destinations that target this destination to close their producers
    if (aliasesThatTargetThisDest != null)
    {
      synchronized(aliasesThatTargetThisDest)
      {
        Iterator i = aliasesThatTargetThisDest.iterator();

        while (i.hasNext())
        {
          AbstractAliasDestinationHandler abstractAliasDestinationHandler = 
            (AbstractAliasDestinationHandler) i.next();

          abstractAliasDestinationHandler.notifyReceiveAllowed(abstractAliasDestinationHandler);
        }
      }
    }
    
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.exit(tc, "notifyTargettingAliasesReceiveAllowed");

    return;
  }
1288570
@Override
    public boolean registerConsumerSetMonitor(
                                              SIDestinationAddress destinationAddress,
                                              String discriminatorExpression,
                                              ConsumerSetChangeCallback callback)
                    throws SIResourceException,
                    SINotPossibleInCurrentConfigurationException,
                    SIConnectionUnavailableException,
                    SIConnectionDroppedException,
                    SIIncorrectCallException,
                    SICommandInvocationFailedException
    {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(
                        tc,
                        "registerConsumerSetMonitor",
                        new Object[] { destinationAddress,
                                      discriminatorExpression,
                                      callback });

        // Check that a listener has been specified
        if (callback == null)
        {
            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                SibTr.exit(tc, "registerConsumerSetMonitor", "SIIncorrectCallException");
            // Parameter is null, throw an excepiton
            throw new SIIncorrectCallException(nls.getFormattedMessage("NULL_CONSUMERSETCHANGECALLBACK_CWSIP0667", null, null));
        } else if (destinationAddress == null) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                SibTr.exit(tc, "registerConsumerSetMonitor", "SIIncorrectCallException");
            // Parameter is null, throw an excepiton
            throw new SIIncorrectCallException(nls.getFormattedMessage("NULL_DESTINATIONADDRESS_CWSIP0668", null, null));

        } else if (discriminatorExpression == null) {
            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                SibTr.exit(tc, "registerConsumerSetMonitor", "SIIncorrectCallException");
            // Parameter is null, throw an excepiton
            throw new SIIncorrectCallException(nls.getFormattedMessage("NULL_DISCRIMINATOREXPRESSION_CWSIP0669", null, null));

        }
        boolean areConsumers = false;
        try
        {
            DestinationHandler topicSpace =
                            _destinationManager.getDestination((JsDestinationAddress) destinationAddress, false);

            areConsumers =
                            _messageProcessor.
                                            getMessageProcessorMatching().
                                            registerConsumerSetMonitor(topicSpace,
                                                                       discriminatorExpression,
                                                                       this,
                                                                       callback);
        } catch (Exception e)
        {
            // FFDC
            FFDCFilter
                            .processException(
                                              e,
                                              "com.ibm.ws.sib.processor.impl.ConnectionImpl.registerConsumerSetMonitor",
                                              "1:7378:1.347.1.25",
                                              this);

            if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                SibTr.exception(tc, e);

            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                SibTr.exit(tc, "registerConsumerSetMonitor", "SIErrorException");
            //SIErrorException is RuntimeExcetion hence catching this exception in StaticCATConnection
            throw new SIErrorException(e);
        }

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "registerConsumerSetMonitor", Boolean.valueOf(areConsumers));
        return areConsumers;
    }
392514
public void setCurrentlyDoingReceiveWithWait(boolean d) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(this, tc, "setCurrentlyDoingReceiveWithWait", d);
        currentlyDoingReceiveWithWait = d;
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(this, tc, "setCurrentlyDoingReceiveWithWait");
    }
1208593
public void closeRemoteConsumers(SIBUuid8 remoteMEId)
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.entry(tc, "closeRemoteConsumers", remoteMEId);

    Iterator aihs = _anycastInputHandlers.keySet().iterator();
    
    while (aihs.hasNext())
    {
      String key = (String) aihs.next();
      AnycastInputHandler aih = _anycastInputHandlers.get(key);
      if (aih.getLocalisationUuid().equals(remoteMEId))
        closeRemoteConsumer(key);
    }

    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
      SibTr.exit(tc, "closeRemoteConsumers");

    return;
  }
1288176
public static <Item extends IItem & IExpandable> void notifyItemsChanged(final FastAdapter adapter, ExpandableExtension expandableExtension, Set<Long> identifiers, boolean restoreExpandedState) {
        int i;
        IItem item;
        for (i = 0; i < adapter.getItemCount(); i++) {
            item = adapter.getItem(i);
            if (item instanceof IExpandable) {
                notifyItemsChanged(adapter, expandableExtension, (Item) item, identifiers, true, restoreExpandedState);
            } else if (identifiers.contains(item.getIdentifier())) {
                adapter.notifyAdapterItemChanged(i);
            }
        }
    }
57686
protected final void messageReceived(AIStreamKey key)
  {
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
      SibTr.entry(this, tc, "messageReceived", key);
    
    long timeout = refillTime;
    boolean reissueGet = false;
    
    synchronized (this)
    {
      countOfUnlockedMessages++;

      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "readAhead change: countOfUnlockedMessages++ " + countOfUnlockedMessages);

      if (key.getOriginalTimeout() == SIMPConstants.INFINITE_TIMEOUT)
      {
        countOfOutstandingInfiniteTimeoutGets--;

        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
            SibTr.debug(tc, "readAhead change: countOfOutstandingInfiniteTimeoutGets-- " + countOfOutstandingInfiniteTimeoutGets);
      }      
      
      // If the msg that came in was for a refill request then we can allow normal
      // operations to resume or redrive a new request for any attempted requests while
      // we were busy
      if (isRefilling && key.getTick() == refillTick)
      {
        // redrive a request that encompasses any requests that came in while we
        // were busy trying to refill.
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "we are refilling, refillTime: " + Long.valueOf(refillTime));
        
        isRefilling = false;
        refillTick = AnycastInputHandler.INVALID_TICK;
        
        if (refillTime != LocalConsumerPoint.NO_WAIT)
        {          
          if (timeout != LocalConsumerPoint.INFINITE_WAIT)
            timeout = refillTime - System.currentTimeMillis();
          
          if (timeout == LocalConsumerPoint.INFINITE_WAIT || timeout > 0)
            reissueGet = true;
        }
      }              
    } // end of synch
    
    if (reissueGet) // outside of synch block
    {
      initiateRefill();
      waiting(timeout, true);
    }
    
    if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
      SibTr.exit(this, tc, "messageReceived");
  }