Beispiel #1
0
        public Task Initialize(Func <Task <bool> > before = null, Func <Task> after = null)
        {
            ValidateConfiguration();

            return(MakeStateTransition(ProviderState.Created, ProviderState.Initializing, ProviderState.Initialized,
                                       () => InitializeCore().ContinueWith(
                                           t =>
            {
                _rawDataSource = CreateDataSource(t.Result);

                if (_rawDataSource != null)
                {
                    _rawDataSourceObserver = _rawDataSource.Subscribe(
                        data => _dataSourceProxySubject.OnNext(data),
                        error =>
                    {
                        _dataSourceProxySubject.OnError(error);
                        Log.Error().Exception(error).Write();
                        _providerStateSubject.OnNext(ProviderState.Failed);
                    });
                }

                return t.Result;
            }, TaskContinuationOptions.OnlyOnRanToCompletion),
                                       before, after));
        }