public XboxInputRequestHandler(CloseFunction closeFunction, SenderFunction senderFunction, XboxDevice device, EmulatedControllersService emulatedControllersService, DeviceDisconnectedEventHandler disconnectedEventHandler) : base(closeFunction, senderFunction) { this.device = device; this.emulatedControllersService = emulatedControllersService; this.disconnectedEventHandler = disconnectedEventHandler; device.FeedbackEvent += FeedbackEvent; }
public IMessageHandler CreateHandler(HttpContext context, CloseFunction closeFunction, SenderFunction sendFunction) { string emulatorName = PathRegex.Match(context.Request.Path.Value).Groups[1].Value; Emulators emulatorType = Enum.Parse <Emulators>(emulatorName); var emulator = emulatorService.FindEmulator <IDs4Emulator>(DeviceTypes.SonyDualShock4, emulatorType); var device = emulator.CreateDs4Device(); DeviceDisconnectedEventHandler disconnectedEvent = (sender, args) => closeFunction(); device.Closed += disconnectedEvent; var ip = context.Request.HttpContext.Connection.RemoteIpAddress?.ToString(); emulatedControllersService.Add(new NetworkDeviceInfo { Device = device, IPAddress = ip, DeviceType = DeviceTypes.SonyDualShock4, Emulator = emulator.Emulator, }); return(new Ds4InputRequestHandler(closeFunction, sendFunction, device, emulatedControllersService, disconnectedEvent)); }