// Not an error. The frame is probably a channel Open for this channel id, which
// does not require asynchronous work therefore its absence from
// _channelsForCurrentMessage is ok.
}
AMQBody body = frame.getBodyFrame();
//Look up the Channel's Actor and set that as the current actor
// If that is not available then we can use the ConnectionActor
// that is associated with this AMQMPSession.
LogActor channelActor = null;
if (amqChannel != null)
{
channelActor = amqChannel.getLogActor();
}
CurrentActor.set(channelActor == null ? _actor : channelActor);
try
{
long startTime = 0;
String frameToString = null;
if (_logger.isDebugEnabled())
{
startTime = System.currentTimeMillis();
frameToString = frame.toString();
_logger.debug("RECV: " + frame);
}
// Check that this channel is not closing
if (channelAwaitingClosure(channelId))
{
if ((frame.getBodyFrame() instanceof ChannelCloseOkBody))
{
if (_logger.isInfoEnabled())
{
_logger.info("Channel[" + channelId + "] awaiting closure - processing close-ok");
}
}
else
{
// The channel has been told to close, we don't process any more frames until
// it's closed.
return;
}
}
try
{
body.handle(channelId, this);
}
catch(AMQConnectionException e)
{
_logger.info(e.getMessage() + " whilst processing frame: " + body);
closeConnection(channelId, e);