コード例 #1
0
        void Handle(GameLockChanged gameLockChanged)
        {
            var obs = GetOrAdd(gameLockChanged.GameId);

            lock (obs) {
                var state = new GameLockState(gameLockChanged.IsLocked, gameLockChanged.CanAbort);
                _currentValues[gameLockChanged.GameId] = state;
                obs.Item1.OnNext(state);
            }
        }
コード例 #2
0
 Tuple <Subject <GameLockState>, GameLockState> GetOrAdd(Guid gameId)
 {
     lock (_observables) {
         if (!_observables.ContainsKey(gameId))
         {
             _observables[gameId]   = new Subject <GameLockState>();
             _currentValues[gameId] = new GameLockState(false, false);
         }
         return(Tuple.Create(_observables[gameId], _currentValues[gameId]));
     }
 }