@@ -7,6 +7,15 @@ namespace Exceptionless.Plugins.Default {
7
7
[ Priority ( 100 ) ]
8
8
public class HeartbeatPlugin : IEventPlugin , IDisposable {
9
9
private SessionHeartbeat _heartbeat ;
10
+ private readonly TimeSpan _interval ;
11
+
12
+ /// <summary>
13
+ /// Controls whether session heartbeats are sent.
14
+ /// </summary>
15
+ /// <param name="interval">The interval at which heartbeats are sent after the last sent event. The default is 30 seconds.</param>
16
+ public HeartbeatPlugin ( TimeSpan ? interval = null ) {
17
+ _interval = interval . HasValue && interval . Value . Ticks > 0 ? interval . Value : TimeSpan . FromSeconds ( 30 ) ;
18
+ }
10
19
11
20
public void Run ( EventPluginContext context ) {
12
21
if ( context . Event . IsSessionHeartbeat ( ) )
@@ -26,12 +35,12 @@ public void Run(EventPluginContext context) {
26
35
return ;
27
36
28
37
if ( _heartbeat == null ) {
29
- _heartbeat = new SessionHeartbeat ( user , context . Client ) ;
38
+ _heartbeat = new SessionHeartbeat ( user , _interval , context . Client ) ;
30
39
} else if ( _heartbeat . User . Identity != user . Identity ) {
31
40
if ( _heartbeat != null )
32
41
_heartbeat . Dispose ( ) ;
33
42
34
- _heartbeat = new SessionHeartbeat ( user , context . Client ) ;
43
+ _heartbeat = new SessionHeartbeat ( user , _interval , context . Client ) ;
35
44
} else {
36
45
if ( _heartbeat != null )
37
46
_heartbeat . DelayNext ( ) ;
@@ -48,11 +57,12 @@ public void Dispose() {
48
57
49
58
public class SessionHeartbeat : IDisposable {
50
59
private readonly Timer _timer ;
51
- private readonly int _interval = 30 * 1000 ;
60
+ private readonly TimeSpan _interval ;
52
61
private readonly ExceptionlessClient _client ;
53
62
54
- public SessionHeartbeat ( UserInfo user , ExceptionlessClient client ) {
63
+ public SessionHeartbeat ( UserInfo user , TimeSpan interval , ExceptionlessClient client ) {
55
64
User = user ;
65
+ _interval = interval ;
56
66
_client = client ;
57
67
_timer = new Timer ( SendHeartbeat , null , _interval , _interval ) ;
58
68
}
0 commit comments