コード例 #1
0
        public void Setup()
        {
            _arrayOfData = new StreamItemCollection[_totalCount];

            for (int i = 0; i < _totalCount; i++)
            {
                _arrayOfData[i] = new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = i
                    }
                });
            }

            var loggerFactory = new LoggerFactory();

            _streamService = new StreamServiceExample(loggerFactory.CreateLogger("StreamServiceBenchmark"), false);
            var cts = new CancellationTokenSource();
            var serverStreamWriter = new ServerStreamWriterFake();
            var streamInfo         = new StreamInfo <StreamItemCollection>()
            {
                CancelationToken = cts.Token,
                Keys             = new[] { "tenantId" },
                Peer             = "127.0.0.1:5000",
                Stream           = serverStreamWriter
            };

            _streamData = _streamService.RegisterStream(streamInfo, new Filter()).GetAwaiter().GetResult();
            _streamService.SwitchToReady(_streamData);
        }
コード例 #2
0
        public void Setup()
        {
            _arrayOfData = new StreamItemCollection[TotalCount];

            for (int i = 0; i < TotalCount; i++)
            {
                _arrayOfData[i] = new StreamItemCollection(new[]
                {
                    new StreamItem()
                    {
                        StreamItemId = i
                    }
                });
            }

            var loggerFactory = new LoggerFactory();

            _streamService = new StreamServiceExample(loggerFactory.CreateLogger("StreamServiceMultipleClientsBenchmark"), false);
            var cts = new CancellationTokenSource();

            var list = new List <StreamData <StreamItemCollection, StreamItem, long> >();

            for (int i = 0; i < ConnectedStreams; i++)
            {
                var serverStreamWriter = new ServerStreamWriterFake();
                var streamInfo         = new StreamInfo <StreamItemCollection>()
                {
                    CancelationToken = cts.Token,
                    Keys             = new[] { "tenantId" },
                    Peer             = "127.0.0.1:5000",
                    Stream           = serverStreamWriter
                };

                var streamDataItem = _streamService.RegisterStream(streamInfo, new Filter())
                                     .GetAwaiter().GetResult();
                _streamService.SwitchToReady(streamDataItem);
                list.Add(streamDataItem);
            }

            _streamData = list;
        }
コード例 #3
0
        public void TestOrder()
        {
            var heap =
                new MinBinaryHeap <StreamItemCollection, StreamItem, long>(128);

            var array = new StreamItemCollection[]
            {
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 100,
                    }
                }),
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 90,
                    }
                })
                ,
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 80,
                    }
                })
                ,
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 70,
                    }
                })
                ,
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 60,
                    }
                })
                ,
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 50,
                    }
                })
                ,
                new StreamItemCollection(new []
                {
                    new StreamItem()
                    {
                        StreamItemId = 40,
                    }
                })
            };

            foreach (var item in array)
            {
                heap.Enqueue(item);
            }

            var min = long.MinValue;

            //For Debug
            //var list = new List<WithdrawalUpdateArrayResponse>();
            while (heap.Count != 0)
            {
                var item = heap.Dequeue();
                //list.Add(item);
                Assert.True(min < item.StreamItems.First().StreamItemId);
                min = item.StreamItems.First().StreamItemId;
            }
        }
コード例 #4
0
		private async Task LoadDataInternalAsync()
		{
			await _localStorageManager.ClearTempFilesAsync();

			var streamItems = new StreamItemCollection(_apiClient, _streamId, _showNewestFirst, _telemetryClient, AllArticles, b => IsBusy = b, _preloadItemCount);
			streamItems.LoadMoreItemsError += (sender, args) => IsOffline = true;
			await streamItems.InitAsync();
			
			Items = streamItems;
			_currentItem = Items.FirstOrDefault();

			if (_currentItem != null)
			{
				_currentItem.IsSelected = true;
				SetCurrentItemRead(!_currentItem.Unread);
				SetCurrentItemStarred(_currentItem.Starred);
			}
			else
			{
				SetCurrentItemRead(false);
				SetCurrentItemStarred(false);
			}

			CurrentItemReadEnabled = _currentItem != null && !(_currentItem is EmptySpaceStreamItem) && !(_currentItem is HeaderSpaceStreamItem);
			CurrentItemStarredEnabled = _currentItem != null && !(_currentItem is EmptySpaceStreamItem) && !(_currentItem is HeaderSpaceStreamItem);
			RaiseOpenWebCommandCanExecuteChanged();
			RaiseShareCommandCanExecuteChanged();
			RaiseSaveCommandCanExecuteChanged();

			if (Items != null)
			{
				var streamItemCollectionState = Items.GetSate();
				//await _cacheManager.SaveStreamAsync(streamItemCollectionState);
				await _localStorageManager.SaveStreamCollectionAsync(streamItemCollectionState);
			}
		}
コード例 #5
0
		private async void LoadData()
		{
			IsBusy = true;

			Exception error = null;
			try
			{
				IsOffline = false;
				await LoadDataInternalAsync();
			}
			catch (AuthenticationApiException)
			{
				_apiClient.ClearSession();
				_navigationService.Navigate(PageTokens.SignIn, null);
				return;
			}
			catch (Exception ex)
			{
				error = ex;
				_telemetryClient.TrackExceptionFull(ex);
			}
			finally
			{
				IsBusy = false;
			}

			if (error == null) return;

			IsOffline = true;

			IsBusy = true;
			var cacheData = await _localStorageManager.LoadStreamCollectionAsync(_streamId);
			IsBusy = false;

			if (cacheData != null)
			{
				var items = new StreamItemCollection(cacheData, _apiClient, _telemetryClient, b => IsBusy = b, _preloadItemCount);
				_currentItem = items.FirstOrDefault(i => i.IsSelected);
				_currentItemRead = _currentItem != null && !_currentItem.Unread;
				CurrentItemReadEnabled = _currentItem != null;
				_currentItemStarred = _currentItem != null && _currentItem.Starred;
				CurrentItemStarredEnabled = _currentItem != null;

				Items = items;
			}

			MessageDialog msgbox = new MessageDialog(error.Message, Strings.Resources.ErrorDialogTitle);
			await msgbox.ShowAsync();
		}
コード例 #6
0
		private bool RestoreState(Dictionary<string, object> viewModelState)
		{
			if (viewModelState == null)
				return false;
			
			object stateValue;
			if (viewModelState.TryGetValue("Title", out stateValue))
				Title = (string)stateValue;

			_currentItemRead = viewModelState.GetValue<bool>("CurrentItemRead");
			OnPropertyChanged("CurrentItemRead");

			CurrentItemReadEnabled = viewModelState.GetValue<bool>("CurrentItemReadEnabled");

			_currentItemStarred = viewModelState.GetValue<bool>("CurrentItemStarred");
			OnPropertyChanged("CurrentItemStarred");

			CurrentItemStarredEnabled = viewModelState.GetValue<bool>("CurrentItemStarredEnabled");

			var itemsState = viewModelState.GetValue<StreamItemCollectionState>("Items");
			if (itemsState == null)
				return false;

			_currentItem = itemsState.Items.FirstOrDefault(i => i.IsSelected);
			Items = new StreamItemCollection(itemsState, _apiClient, _telemetryClient, b => IsBusy = b, _preloadItemCount);
			Items.LoadMoreItemsError += (sender, args) => IsOffline = true;

			return true;
		}