Пример #1
0
        //public async Task SwitchActiveSession(SwitchActiveSessionNotification 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);
        //    await room.SwitchActiveSession(item);
        //}


        public async Task UpdateSessionInfo(UpdateSessionInfoRequest 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.UpdateSessionInfo(item);
        }
Пример #2
0
        //public async Task SwitchActiveSession(SwitchActiveSessionNotification item)
        //{
        //    if (this.Sessions.ContainsKey(item.SessionId))
        //    {
        //        this.CurrentSession = this.Sessions[item.SessionId];

        //        var manager = ListenerManager.GetInstance();
        //        await Task.Run(() =>
        //        {
        //            Parallel.ForEach(this.Listeners, c =>
        //            {
        //                var listener = manager.GetConnectionInfo(c);
        //                if (listener != null)
        //                {
        //                    lock (listener)
        //                    {
        //                        IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>();
        //                        hubContext.Clients.Group(this.RoomId).SwitchActiveSession(item);
        //                    }
        //                }
        //            });
        //        });
        //    }
        //}
        #endregion

        public async Task UpdateSessionInfo(UpdateSessionInfoRequest item)
        {
            if (this.Sessions.ContainsKey(item.SessionId))
            {
                var session = this.Sessions[item.SessionId];
                session.ContentType = item.ContentType;
                session.FileName    = item.FileName;

                var notification = new AppendSessionNotification()
                {
                    Id              = item.SessionId,
                    ContentType     = item.ContentType,
                    FileName        = item.FileName,
                    BroadcasterName = session.BroadcasterName
                };

                var manager = ListenerManager.GetInstance();
                await Task.Run(() =>
                {
                    IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <ListenHub>();
                    hubContext.Clients.Group(this.RoomId).UpdateSessionInfo(notification);
                });
            }
        }
Пример #3
0
        //public async Task SwitchActiveSession(SwitchActiveSessionNotification 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);
        //    await room.SwitchActiveSession(item);
        //}


        public async Task UpdateSessionInfo(UpdateSessionInfoRequest 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.UpdateSessionInfo(item);
        }
Пример #4
0
        //public async Task SwitchActiveSession(SwitchActiveSessionNotification item)
        //{
        //    if (this.Sessions.ContainsKey(item.SessionId))
        //    {
        //        this.CurrentSession = this.Sessions[item.SessionId];

        //        var manager = ListenerManager.GetInstance();
        //        await Task.Run(() =>
        //        {
        //            Parallel.ForEach(this.Listeners, c =>
        //            {
        //                var listener = manager.GetConnectionInfo(c);
        //                if (listener != null)
        //                {
        //                    lock (listener)
        //                    {
        //                        IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>();
        //                        hubContext.Clients.Group(this.RoomId).SwitchActiveSession(item);
        //                    }
        //                }
        //            });
        //        });
        //    }
        //}
        #endregion

        public async Task UpdateSessionInfo(UpdateSessionInfoRequest item)
        {
            if (this.Sessions.ContainsKey(item.SessionId))
            {
                var session = this.Sessions[item.SessionId];
                session.ContentType = item.ContentType;
                session.FileName = item.FileName;

                var notification = new AppendSessionNotification()
                {
                    Id = item.SessionId,
                    ContentType = item.ContentType,
                    FileName = item.FileName,
                    BroadcasterName = session.BroadcasterName
                };

                var manager = ListenerManager.GetInstance();
                await Task.Run(() =>
                {
                    IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ListenHub>();
                    hubContext.Clients.Group(this.RoomId).UpdateSessionInfo(notification);
                });
            }
        }