Skip to content

Commit 46e1172

Browse files
committed
Merge branch 'JoshKeegan-streamKeepAlive' into 1.3
2 parents 5174916 + 79b16b9 commit 46e1172

File tree

5 files changed

+23
-0
lines changed

5 files changed

+23
-0
lines changed

Tweetinvi.Core/Core/Streaming/IStreamResultGenerator.cs

+6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ public interface IStreamResultGenerator
3232
/// </summary>
3333
event EventHandler<StreamExceptionEventArgs> StreamStopped;
3434

35+
/// <summary>
36+
/// A keep-alive message has been received.
37+
/// Twitter sends these every 30s so we know the stream's still working.
38+
/// </summary>
39+
event EventHandler KeepAliveReceived;
40+
3541
/// <summary>
3642
/// Get the current state of the stream analysis
3743
/// </summary>

Tweetinvi.Core/Core/Streaming/ITwitterStream.cs

+6
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ public interface ITwitterStream
2929
/// </summary>
3030
event EventHandler<StreamExceptionEventArgs> StreamStopped;
3131

32+
/// <summary>
33+
/// A keep-alive message has been received.
34+
/// Twitter sends these every 30s so we know the stream's still working.
35+
/// </summary>
36+
event EventHandler KeepAliveReceived;
37+
3238
/// <summary>
3339
/// A tweet has been deleted.
3440
/// </summary>

Tweetinvi.Streams/Helpers/StreamResultGenerator.cs

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class StreamResultGenerator : IStreamResultGenerator
2121
public event EventHandler StreamResumed;
2222
public event EventHandler StreamPaused;
2323
public event EventHandler<StreamExceptionEventArgs> StreamStopped;
24+
public event EventHandler KeepAliveReceived;
2425

2526
private IStreamTask _currentStreamTask;
2627
private readonly IFactory<IStreamTask> _streamTaskFactory;
@@ -84,6 +85,7 @@ public async Task StartStreamAsync(Func<string, bool> processObject, Func<ITwitt
8485
_currentStreamTask = streamTask;
8586
_currentStreamTask.StreamStarted += StreamTaskStarted;
8687
_currentStreamTask.StreamStateChanged += StreamTaskStateChanged;
88+
_currentStreamTask.KeepAliveReceived += KeepAliveReceived;
8789
}
8890
#if NET_CORE
8991
await Task.Run(() =>
@@ -188,6 +190,7 @@ private StreamExceptionEventArgs StopStreamAndUnsubscribeFromEvents()
188190
{
189191
streamTask.StreamStarted -= StreamTaskStarted;
190192
streamTask.StreamStateChanged -= StreamTaskStateChanged;
193+
streamTask.KeepAliveReceived -= KeepAliveReceived;
191194
streamTask.Stop();
192195

193196
if (_currentStreamTask == streamTask)

Tweetinvi.Streams/StreamTask.cs

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public interface IStreamTask
2121
{
2222
event EventHandler StreamStarted;
2323
event EventHandler<GenericEventArgs<StreamState>> StreamStateChanged;
24+
event EventHandler KeepAliveReceived;
2425

2526
StreamState StreamState { get; }
2627
Exception LastException { get; }
@@ -35,6 +36,7 @@ public class StreamTask : IStreamTask
3536
{
3637
public event EventHandler StreamStarted;
3738
public event EventHandler<GenericEventArgs<StreamState>> StreamStateChanged;
39+
public event EventHandler KeepAliveReceived;
3840

3941
// https://dev.twitter.com/streaming/overview/connecting#stalls
4042
private const int STREAM_DISCONNECTED_DELAY = 90000;
@@ -122,6 +124,7 @@ public void Start()
122124
{
123125
if (json == string.Empty)
124126
{
127+
this.Raise(KeepAliveReceived);
125128
continue;
126129
}
127130

Tweetinvi.Streams/TwitterStream.cs

+5
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ public event EventHandler<StreamExceptionEventArgs> StreamStopped
106106
add { _streamResultGenerator.StreamStopped += value; }
107107
remove { _streamResultGenerator.StreamStopped -= value; }
108108
}
109+
public event EventHandler KeepAliveReceived
110+
{
111+
add { _streamResultGenerator.KeepAliveReceived += value; }
112+
remove { _streamResultGenerator.KeepAliveReceived -= value; }
113+
}
109114

110115
public event EventHandler<TweetDeletedEventArgs> TweetDeleted;
111116
public event EventHandler<TweetLocationDeletedEventArgs> TweetLocationInfoRemoved;

0 commit comments

Comments
 (0)