public Response HandleRequest(Request request)
        {
            ClickCommand action = (ClickCommand)Convert.ToInt32(request.RequestedParameters[0]);

            switch (action)
            {
                case ClickCommand.LeftClickDown:
                    MouseController.LeftClickDown();
                    break;

                case ClickCommand.LeftClickUp:
                    MouseController.LeftClickUp();
                    break;

                case ClickCommand.RightClickDown:
                    MouseController.RightClickDown();
                    break;

                case ClickCommand.RightClickUp:
                    MouseController.RightClickUp();
                    break;
            }

            Response response = new Response();
            response.StatusCode = TCPStatusCodes.Ok;
            return response;
        }
        public Response HandleRequest(Request request)
        {
            PresentationControls control = (PresentationControls)Convert.ToInt32(request.RequestedParameters[0]);

            InputSimulator sim = new InputSimulator();

            switch (control)
            {
                //start the presentation with F5
                case PresentationControls.StartPresentation:
                    sim.Keyboard.KeyPress(new VirtualKeyCode[] { VirtualKeyCode.F5 });
                    break;

                //stop the presentation with ESC
                case PresentationControls.StopPresentation:
                    sim.Keyboard.KeyPress(new VirtualKeyCode[] { VirtualKeyCode.ESCAPE });
                    break;

                //next slide is arrow right
                case PresentationControls.Next:
                    sim.Keyboard.KeyPress(new VirtualKeyCode[] { VirtualKeyCode.RIGHT });
                    break;

                //previous is arrow left
                case PresentationControls.Previous:
                    sim.Keyboard.KeyPress(new VirtualKeyCode[] { VirtualKeyCode.LEFT });
                    break;

                default:
                    break;
            }

            return new Response(TCPStatusCodes.Ok);
        }
        public Response HandleRequest(Request request)
        {
            Response response = new Response();
            response.StatusCode = TCPStatusCodes.Ok;

            if (!SecurityManager.Instance.IsAuthorized(request.MACAddress))
            {
                response.StatusCode = TCPStatusCodes.NotAuthorized;
                Log.Info("Security", "Authorization attempt failed from MAC " + request.MACAddress);
            }
            else
            {
                response.StatusCode = TCPStatusCodes.Ok;
                Log.Info("Security", "Use authorised successfully from MAC " + request.MACAddress);
            }

            return response;
        }
        public Response HandleRequest(Request request)
        {
            int clientX = Convert.ToInt32(request.RequestedParameters[0]), clientY = Convert.ToInt32(request.RequestedParameters[1]);
            string uid = request.RequestedParameters[2];

            if (uid != currentTouchUid)
            {
                clientStartPoint = new Point(clientX, clientY);
                serverStartPoint = MouseController.GetCurrentMousePosition();
                currentTouchUid = uid;
            }
            else
            {
                var delta = new Point(clientX - clientStartPoint.X, clientY - clientStartPoint.Y);
                var newPos = new Point(serverStartPoint.X + delta.X, serverStartPoint.Y + delta.Y);
                MouseController.SetMousePosition(newPos);
            }
            return new Response(TCPStatusCodes.Ok);
        }
        public Response HandleRequest(Request request)
        {
            ScrollCommands command = (ScrollCommands)Convert.ToInt32(request.RequestedParameters[0]);
            switch (command)
            {
                case ScrollCommands.ScrollWithVelocity:
                    MouseController.ScrollWithInitialVelocity(-float.Parse(request.RequestedParameters[1]), float.Parse(request.RequestedParameters[2]));
                    break;

                case ScrollCommands.StopScrolling:
                    MouseController.StopScrolling();
                    break;

                case ScrollCommands.Scroll:
                    MouseController.ScrollHorizontally(-(int)Math.Round(float.Parse(request.RequestedParameters[1])));
                    MouseController.ScrollVertically((int)Math.Round(float.Parse(request.RequestedParameters[2])));
                    break;
            }

            return new Response(TCPStatusCodes.Ok);
        }
        public Response HandleRequest(Request request)
        {
            KeyboardController.PressKey(Convert.ToInt32(request.RequestedParameters[0]));

            return new Response(TCPStatusCodes.Ok);
        }