private void ProcessCommandResponse(SpheroResponse response)
{
CommandWithActions actions;
lock (this)
{
if (!_responseListeners.TryGetValue(response.SequenceNumber, out actions))
{
// TODO - some trace here would be fab
return;
}
_responseListeners.Remove(response.SequenceNumber);
}
if (actions == null)
return;
try
{
ISpheroMessage message = actions.Command.ProcessResponse(response);
actions.OnSuccess(message);
}
catch (Exception exception)
{
actions.OnError(exception);
}
}