/// <summary> /// Finds the state transition handler. /// </summary> /// <param name="currentState">State of the current.</param> /// <param name="frame">The frame.</param> /// <returns></returns> /// <exception cref="IllegalStateTransitionException">if the state transition if not allowed</exception> private IStateAwareMethodListener FindStateTransitionHandler(AMQState currentState, AMQMethodBody frame) { Type clazz = frame.GetType(); if (_logger.IsDebugEnabled) { _logger.Debug("Looking for state transition handler for frame " + clazz); } IDictionary classToHandlerMap = (IDictionary)_state2HandlersMap[currentState]; if (classToHandlerMap == null) { // if no specialised per state handler is registered look for a // handler registered for "all" states return(FindStateTransitionHandler(AMQState.ALL, frame)); } IStateAwareMethodListener handler = (IStateAwareMethodListener)classToHandlerMap[clazz]; if (handler == null) { if (currentState == AMQState.ALL) { _logger.Debug("No state transition handler defined for receiving frame " + frame); Console.WriteLine(" *** No state transition handler defined for receiving frame " + frame); //KHC return(null); } else { // if no specialised per state handler is registered look for a // handler registered for "all" states return(FindStateTransitionHandler(AMQState.ALL, frame)); } } else { return(handler); } }