private async Task ConnectInternalAsync(CancellationToken cancellationToken)
 {
     while (!cancellationToken.IsCancellationRequested)
     {
         ConnectionState = UserStreamsConnectionState.Connecting;
         try
         {
             await UserStreams.Connect(_account, ParseLine, _userStreamTimeout, cancellationToken, TrackKeywords,
                                       _account.ReceiveRepliesAll, _account.ReceiveFollowingsActivity).ConfigureAwait(false);
         }
         catch (Exception ex)
         {
             ConnectionState = UserStreamsConnectionState.WaitForReconnection;
             if (cancellationToken.IsCancellationRequested)
             {
                 break;
             }
             if (await HandleException(ex).ConfigureAwait(false))
             {
                 // if handled: continue running
                 continue;
             }
             ConnectionState = UserStreamsConnectionState.Disconnected;
             throw;
         }
     }
     ConnectionState = UserStreamsConnectionState.Disconnected;
 }
        private async Task SaveUser(UserStreams user)
        {
            _logger.LogInformation("Saving UserStreams object for {0}", user.UserName);

            using (var context = GetContext())
            {
                await context.SaveAsync <UserStreams>(user);
            }
        }
		public UserStreamsViewModel(UserStreams userstreams)
		{
			this.userstreams = userstreams;
			this.Message = userstreams.Status.Message();
			this.CompositeDisposable.Add(new PropertyChangedEventListener(userstreams)
			{
				{ "Status", (sender, e) => this.Message = userstreams.Status.Message() }
			});
		}
        private async Task <UserStreams> GetUser(string username)
        {
            _logger.LogInformation("Getting UserStreams object for {0}", username);

            var context = GetContext();

            var user = await context.LoadAsync <UserStreams>(username);

            if (user == null)
            {
                user = new UserStreams {
                    UserName = username, StreamCount = 0
                }
            }
            ;

            return(user);
        }
		public TwitterAccount(IEnumerable<TwitterToken> tokens)
		{
			// ReSharper disable PossibleMultipleEnumeration
			Guard.ArgumentNull(tokens, "tokens");
			this.Tokens = new ObservableSynchronizedCollection<TwitterToken>(tokens);
			// ReSharper restore PossibleMultipleEnumeration
			this.CurrentToken = this.Tokens.FirstOrDefault();

			this.UserId = this.CurrentToken.ToUserId();
			this.UserStreams = new UserStreams(this);
		}