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)); }
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)); } }
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); } }