code: public void handleControlMessage(SIBUuid8 sourceMEUuid, ControlMessage cMsg)
      throws SIIncorrectCallException, SIErrorException, SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "handleControlMessage", new Object[] { sourceMEUuid, cMsg });
  
      // Next work out type of ControlMessage and process it
      ControlMessageType type = cMsg.getControlMessageType();
  
      // First check to see whether this is an "are you flushed" reply.
      // Such messages will not be mappable to a stream ID since we
      // don't yet have a stream data structure (that's why we sent the
      // query in the first place).  Or...these could be stale messages
      // for streams we don't care about.  Either way, handle them
      // elsewhere.
      if(type == ControlMessageType.FLUSHED)
      {
        _targetStreamManager.handleFlushedMessage((ControlFlushed)cMsg);
      }
      else if(type == ControlMessageType.NOTFLUSHED)
      {
        _targetStreamManager.handleNotFlushedMessage((ControlNotFlushed)cMsg);
      }
      else if (type == ControlMessageType.SILENCE)
      {
        _targetStreamManager.handleSilenceMessage((ControlSilence) cMsg);
      }
      else if (type == ControlMessageType.ACKEXPECTED)
      {
        _targetStreamManager.handleAckExpectedMessage((ControlAckExpected) cMsg);
      }
      else
      {
        // Not a recognised type
        // throw exception
      }
    }
docs: /* (non-Javadoc)
  @see com.ibm.ws.sib.processor.impl.interfaces.ControlHandler#handleControlMessage(com.ibm.ws.sib.trm.topology.Cellule, com.ibm.ws.sib.mfp.control.ControlMessage)
  
  Handle all downstream control messages i.e. target control messages