private void RetrieveAndProcessSnapshotIfNeeded() { FixtureState state = _eventState.GetFixtureState(_resource.Id); int sequence_number = -1; if (state != null) { sequence_number = state.Sequence; } int resource_sequence = SequenceOnStreamingAvailable; _logger.DebugFormat("{0} has stored sequence={1} and current_sequence={2}", _resource, sequence_number, resource_sequence); if (sequence_number == -1 || resource_sequence != sequence_number) { RetrieveAndProcessSnapshot(); } else { Fixture fixture = new Fixture { Sequence = sequence_number, Id = _resource.Id }; if (state != null) { fixture.MatchStatus = state.MatchStatus.ToString(); } try { //unsuspends markets suspended by adapter _stateManager.StateProvider.SuspensionManager.Unsuspend(fixture.Id); _platformConnector.UnSuspend(fixture); } catch (Exception e) { _logger.Error(string.Format("Error unsuspending {0}", _resource), e); SetErrorState(); } } }
public void Unsuspend(Fixture fixture) { IMarketStateCollection state = _stateProvider.GetMarketsState(fixture.Id); List <IMarketState> marketStates; if (state == null) { _logger.WarnFormat($"State is not present for {fixture} - can't unsuspend"); return; } var unsuspendedFixture = GetUnsuspendedFixture(state, out marketStates); if (unsuspendedFixture.Markets.Any()) { _logger.InfoFormat("Unsuspending previously suspended markets in {0}", unsuspendedFixture); try { _plugin.ProcessStreamUpdate(unsuspendedFixture); } catch (Exception ex) { throw new PluginException($"Plugin ProcessStreamUpdate {fixture} error occured", ex); } } ((IUpdatableMarketStateCollection)state).OnMarketsForcedUnsuspension(marketStates); try { _plugin.UnSuspend(fixture); } catch (Exception ex) { throw new PluginException($"Plugin UnSuspend {fixture} error occured", ex); } }