code: public void handleControlMessage(SIBUuid8 sourceMEUuid, ControlMessage cMsg) 
    
    throws SIConnectionLostException, SIRollbackException, SIIncorrectCallException, SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "handleControlMessage", new Object[]{sourceMEUuid,cMsg});
      
      // Work out type of ControlMessage and process it
      ControlMessageType type = cMsg.getControlMessageType();
  
      // Forward flush queries to our parent.  The cellule
      // we pass here doesn't actually matter since our PubSubInputHandler
      // will ignore it and just use the one in the message.
      if (type == ControlMessageType.REQUESTFLUSH) 
      {
        _parentInputHandler.handleControlMessage(_targetMEUuid, cMsg);      
      }
    
      // Forward flush queries to our parent.  The cellule
      // we pass here doesn't actually matter since our PubSubInputHandler
      // will ignore it and just use the one in the message.
      else if ( type == ControlMessageType.AREYOUFLUSHED)
      {
        _internalOutputStreamManager.processFlushQuery((ControlAreYouFlushed)cMsg);      
      }
      
      // Now we can process the rest of the control messages...
      
      else if (type == ControlMessageType.ACK)
      {
        _internalOutputStreamManager.processAck((ControlAck)cMsg);
      }
      else if (type == ControlMessageType.NACK)
      {
        _internalOutputStreamManager.processNack((ControlNack)cMsg);
      }
      else
      {
        // Not a recognised type
        // throw exception
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "handleControlMessage");
  
    }
docs: /* (non-Javadoc)
  @see com.ibm.ws.sib.processor.impl.interfaces.ControlHandler#handleControlMessage(com.ibm.ws.sib.mfp.control.ControlMessage)