protected override void HandleMessage(MessageBase message)
 {
     if (message is InputDeviceDetailsRequest)
     {
         if (device != null)
         {
             logger.Warn($"Input device was received multiple times");
         }
         else
         {
             var detailsMessage = message as InputDeviceDetailsRequest;
             var deviceApi      = (InputDeviceApi)Enum.Parse(typeof(InputDeviceApi), detailsMessage.InputApi);
             device = inputDevices.Create(detailsMessage.Id, detailsMessage.Name, deviceApi, detailsMessage.Sources.Select(InputDeviceSourceWithValue.Create).ToList(), detailsMessage.Targets.Select(InputDeviceTargetWithValue.Create).ToList());
             device.FeedbackReceived += DeviceFeedbackReceived;
         }
     }
     if (message is InputDeviceInputRequest)
     {
         if (device == null)
         {
             logger.Warn($"Input was received to Input device without sending details first");
         }
         else
         {
             var inputMessage = message as InputDeviceInputRequest;
             device.SetData(inputMessage.Inputs.ToDictionary(i => i.Id, i => i.Value));
         }
     }
 }