/// <summary>
/// Start a SearchStream
/// </summary>
/// <param name="textToSearch">text string to begin search</param>
public void StartSearchStreaming(string textToSearch)
{
_twitterSearchCommunicationToken = new CancellationTokenSource();
// when the searchstream gets disconnected, revert to polling (REST) searches
_searchStreamDisconnected.Where(status => status.Equals(true)).Subscribe(StartPollingSearch);
_currentSearchText = textToSearch;
//
if (UserSession.IsActive)
{
SearchStream = UserSession.StartSearchStream(track: textToSearch);
SearchStream.FoundTweets.Subscribe(_searchtimeline.OnNext);
SearchStream.Start();
SearchStream.StreamActive.Subscribe(t => ManageSearchStreamDisconnect());
}
else
{
// cannot get usersession, fall back
_searchStreamDisconnected.OnNext(true);
}
// and get "backfills"; tweets that pre-date the current stream/polling connection
Task.Factory.StartNew(ProcessSearchBackFill_Pump);
}