in src/main/csharp/Connection.cs [651:693]
protected void OnCommand(ITransport commandTransport, Command command)
{
if(command.IsMessageDispatch)
{
// We wait if the Connection is still processing interruption
// code to reset the MessageConsumers.
WaitForTransportInterruptionProcessingToComplete();
DispatchMessage((MessageDispatch) command);
}
else if(command.IsWireFormatInfo)
{
// Ignore for now, might need to save if off later.
}
else if(command.IsKeepAliveInfo)
{
// Ignore only the InactivityMonitor cares about this one.
}
else if(command.IsErrorCommand)
{
if(!closing.Value && !closed.Value)
{
ConnectionError connectionError = (ConnectionError) command;
BrokerError brokerError = connectionError.Exception;
string message = "Broker connection error.";
string cause = "";
if(null != brokerError)
{
message = brokerError.Message;
if(null != brokerError.Cause)
{
cause = brokerError.Cause.Message;
}
}
OnException(new NMSConnectionException(message, cause));
}
}
else
{
Tracer.ErrorFormat("Unknown command: {0}", command);
}
}