Skip to content

Commit 79b16b9

Browse files
committed
Implement #506 - event for a keep-alive being received on a stream
1 parent 2082f5d commit 79b16b9

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(() =>
@@ -190,6 +192,7 @@ private StreamExceptionEventArgs StopStreamAndUnsubscribeFromEvents()
190192
{
191193
streamTask.StreamStarted -= StreamTaskStarted;
192194
streamTask.StreamStateChanged -= StreamTaskStateChanged;
195+
streamTask.KeepAliveReceived -= KeepAliveReceived;
193196
streamTask.Stop();
194197

195198
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
@@ -91,6 +91,11 @@ public event EventHandler<StreamExceptionEventArgs> StreamStopped
9191
add { _streamResultGenerator.StreamStopped += value; }
9292
remove { _streamResultGenerator.StreamStopped -= value; }
9393
}
94+
public event EventHandler KeepAliveReceived
95+
{
96+
add { _streamResultGenerator.KeepAliveReceived += value; }
97+
remove { _streamResultGenerator.KeepAliveReceived -= value; }
98+
}
9499

95100
public event EventHandler<TweetDeletedEventArgs> TweetDeleted;
96101
public event EventHandler<TweetLocationDeletedEventArgs> TweetLocationInfoRemoved;

0 commit comments

Comments
 (0)