예제 #1
0
        public bool UpdateCursor(UpdateCursorRequest request)
        {
            switch (request.Type)
            {
            case CursorType.Select:
                if (request.Anchor == null || request.Active == null)
                {
                    return(false);
                }
                break;

            case CursorType.Point:
            default:
                if (request.Active == null)
                {
                    return(false);
                }

                request.Anchor = null;
                break;
            }

            this.CursorActivePosition = request.Active;
            this.CursorAnchorPosition = request.Anchor;
            this.CursorType           = request.Type;

            return(true);
        }
예제 #2
0
        public async Task UpdateSessionCursor(UpdateCursorRequest item)
        {
            var session = this.GetSession(item.SessionId);

            if (session != null)
            {
                if (session.UpdateCursor(item))
                {
                    var manager = ListenerManager.GetInstance();
                    await Task.Run(() =>
                    {
                        IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <ListenHub>();
                        hubContext.Clients.Group(this.RoomId).UpdateSessionCursor(item);
                    });
                }
            }
        }
예제 #3
0
        public async Task UpdateSessionCursor(UpdateCursorRequest item)
        {
            var connectionId = Context.ConnectionId;
            var instance     = BroadcasterManager.GetInstance();

            if (!instance.IsBroadcaster(connectionId))
            {
                return;
            }

            var info        = instance.GetConnectionInfo(connectionId);
            var roomManager = RoomManager.GetInstance();
            var room        = roomManager.GetRoomInfo(info.RoomId);

            if (!room.IsOwnerSession(item.SessionId, connectionId))
            {
                return;
            }

            await room.UpdateSessionCursor(item);
        }
예제 #4
0
        public async Task UpdateSessionCursor(UpdateCursorRequest item)
        {
            var connectionId = Context.ConnectionId;
            var instance = BroadcasterManager.GetInstance();
            if (!instance.IsBroadcaster(connectionId))
                return;

            var info = instance.GetConnectionInfo(connectionId);
            var roomManager = RoomManager.GetInstance();
            var room = roomManager.GetRoomInfo(info.RoomId);
            if (!room.IsOwnerSession(item.SessionId, connectionId))
                return;

            await room.UpdateSessionCursor(item);
        }
예제 #5
0
 public async Task UpdateSessionCursor(UpdateCursorRequest item)
 {
     var session = this.GetSession(item.SessionId);
     if (session != null)
     {
         if (session.UpdateCursor(item))
         {
             var manager = ListenerManager.GetInstance();
             await Task.Run(() =>
             {
                 IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>();
                 hubContext.Clients.Group(this.RoomId).UpdateSessionCursor(item);
             });
         }
     }
 }