public ValueTask <bool> RemoveAsync(ServiceContext context)
        {
            if (members.TryRemove(context.ContextId, out _))
            {
                Interlocked.Decrement(ref approximatelyLength);
                if (inmemoryStorage != null)
                {
                    inmemoryStorage.Remove(context.ContextId);
                }
            }

            if (members.Count == 0)
            {
                if (parent.TryRemove(GroupName))
                {
                    return(new ValueTask <bool>(true));
                }
            }
            return(new ValueTask <bool>(false));
        }
示例#2
0
        public ValueTask <bool> RemoveAsync(ServiceContext context)
        {
            lock (gate)
            {
                members = members.Remove(context);
                if (inmemoryStorage != null)
                {
                    inmemoryStorage.Remove(context.ContextId);
                }

                if (members.Length == 0)
                {
                    if (parent.TryRemove(GroupName))
                    {
                        return(new ValueTask <bool>(true));
                    }
                }

                return(new ValueTask <bool>(false));
            }
        }
示例#3
0
    public async Task StartGameAsync(uint seed, Vector2Int worldSize)
    {
        if (self.IsHost)
        {
            Console.WriteLine(self.Name + " started game");
            Console.WriteLine(string.Format("{0} / {1}", seed, worldSize));
            Console.WriteLine("Players: " + storage.AllValues.Count);

            PlayerData[] players = storage.AllValues.ToArray();
            for (int i = 0; i < players.Length; i++)
            {
            }

            Broadcast(room).OnGameStart(seed, worldSize);
        }
        else
        {
            Console.WriteLine(self.Name + " has been kicked");
            storage.Remove(Context.ContextId);
            await room.RemoveAsync(Context);
        }
    }