protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { switch ((DiscussionOpCode)operationRequest.OperationCode) { case DiscussionOpCode.Test: var operation = new TestOperation(this.Protocol, operationRequest); if (ValidateOperation(operation, sendParameters)) { SendOperationResponse(operation.GetResponse(), sendParameters); return; } break; case DiscussionOpCode.NotifyUserAccPlusMinus: case DiscussionOpCode.NotifyStructureChanged: case DiscussionOpCode.NotifyArgPointChanged: case DiscussionOpCode.CursorRequest: case DiscussionOpCode.CreateShapeRequest: case DiscussionOpCode.DeleteShapesRequest: case DiscussionOpCode.UnselectAllRequest: case DiscussionOpCode.DeleteSingleShapeRequest: case DiscussionOpCode.StateSyncRequest: case DiscussionOpCode.InitialSceneLoadRequest: case DiscussionOpCode.LinkCreateRequest: case DiscussionOpCode.UnclusterBadgeRequest: case DiscussionOpCode.ClusterBadgeRequest: case DiscussionOpCode.ClusterMoveRequest: case DiscussionOpCode.InkRequest: case DiscussionOpCode.DEditorReport: case DiscussionOpCode.ClusterStatsRequest: case DiscussionOpCode.LinkReportRequest: case DiscussionOpCode.BadgeViewRequest: case DiscussionOpCode.ExplanationModeSyncViewRequest: case DiscussionOpCode.CommentReadRequest: case DiscussionOpCode.AttachLaserPointerRequest: case DiscussionOpCode.DetachLaserPointerRequest: case DiscussionOpCode.LaserPointerMovedRequest: case DiscussionOpCode.ImageViewerManipulateRequest: case DiscussionOpCode.ImageViewerStateRequest: case DiscussionOpCode.BrowserScrollChanged: case DiscussionOpCode.GetBrowserScrollPos: case DiscussionOpCode.PdfScrollChanged: case DiscussionOpCode.GetPdfScrollPos: HandleGameOperation(operationRequest, sendParameters); break; case DiscussionOpCode.NotifyLeaveUser: handleOnlineStatus(_photonPer, _dbId, false, (int)DeviceType.Sticky); break; case DiscussionOpCode.StatsEvent: if (LogEvent(operationRequest.Parameters)) { HandleGameOperation(operationRequest, sendParameters); // broadcast stats event } break; case DiscussionOpCode.ScreenshotRequest: HandleScreenshotRequest(operationRequest, sendParameters); break; } base.OnOperationRequest(operationRequest, sendParameters); }