private static object HandleIpcRequest(DownstreamIpcRequest request) { switch (request) { case NewInlayRequest newInlayRequest: return(OnNewInlayRequest(newInlayRequest)); case ResizeInlayRequest resizeInlayRequest: { var inlay = inlays[resizeInlayRequest.Guid]; if (inlay == null) { return(null); } inlay.Resize(new Size(resizeInlayRequest.Width, resizeInlayRequest.Height)); return(BuildRenderHandlerResponse(inlay.RenderHandler)); } case NavigateInlayRequest navigateInlayRequest: { var inlay = inlays[navigateInlayRequest.Guid]; inlay.Navigate(navigateInlayRequest.Url); return(null); } case DebugInlayRequest debugInlayRequest: { var inlay = inlays[debugInlayRequest.Guid]; inlay.Debug(); return(null); } case RemoveInlayRequest removeInlayRequest: { var inlay = inlays[removeInlayRequest.Guid]; inlays.Remove(removeInlayRequest.Guid); inlay.Dispose(); return(null); } case MouseEventRequest mouseMoveRequest: { var inlay = inlays[mouseMoveRequest.Guid]; inlay?.HandleMouseEvent(mouseMoveRequest); return(null); } case KeyEventRequest keyEventRequest: { var inlay = inlays[keyEventRequest.Guid]; inlay?.HandleKeyEvent(keyEventRequest); return(null); } default: throw new Exception($"Unknown IPC request type {request.GetType().Name} received."); } }
// TODO: Option to wrap this func in an async version? public Task <IpcResponse <TResponse> > Send <TResponse>(DownstreamIpcRequest request) { return(ipc.RemoteRequestAsync <TResponse>(request)); }
public void Send(DownstreamIpcRequest request) { Send <object>(request); }