Skip to content

Commit 619870c

Browse files
committed
Added the ability to send a heartbeat event
exceptionless/Exceptionless#166
1 parent b0cc275 commit 619870c

12 files changed

+92
-21
lines changed

Source/Extras/Exceptionless.Extras.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
<Compile Include="Plugins\20_ErrorPlugin.cs" />
5555
<Compile Include="Plugins\15_PrivateInformationPlugin.cs" />
5656
<Compile Include="Plugins\70_TraceLogPlugin.cs" />
57-
<Compile Include="Plugins\90_SessionIdManagerPlugin.cs" />
5857
<Compile Include="Plugins\80_VersionPlugin.cs" />
5958
<Compile Include="ExceptionlessSection.cs" />
6059
<Compile Include="Extensions\EventBuilderExtensions.cs" />

Source/Extras/Extensions/ExceptionlessExtraConfigurationExtensions.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
using Exceptionless.Extras.Storage;
1414
using Exceptionless.Extras.Utility;
1515
using Exceptionless.Logging;
16-
using Exceptionless.Plugins;
1716
using Exceptionless.Storage;
1817

1918
namespace Exceptionless {
@@ -28,14 +27,6 @@ public static void UseErrorPlugin(this ExceptionlessConfiguration config) {
2827
config.RemovePlugin<SimpleErrorPlugin>();
2928
config.AddPlugin<Plugins.ErrorPlugin>();
3029
}
31-
32-
/// <summary>
33-
/// Ensures only a single user session will be created unless you specify a session id via the event builder.
34-
/// NOTE: This should only be used on deskop applications. Using this in web farm scenarios is not advisable.
35-
/// </summary>
36-
public static void UseSessionIdManagementPlugin(this ExceptionlessConfiguration config) {
37-
config.AddPlugin<SessionIdManagerPlugin>();
38-
}
3930

4031
public static void UseIsolatedStorage(this ExceptionlessConfiguration config) {
4132
config.Resolver.Register<IObjectStorage>(new IsolatedStorageObjectStorage(config.Resolver));

Source/Platforms/Console/ExceptionlessExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public static class ExceptionlessExtensions {
1111
/// </summary>
1212
/// <param name="client">The ExceptionlessClient.</param>
1313
public static void Register(this ExceptionlessClient client) {
14-
client.Configuration.UseSessionIdManagementPlugin();
14+
client.Configuration.UseSessions();
1515
client.Startup();
1616
client.SubmitSessionStart();
1717

Source/Platforms/Windows/ExceptionlessWindowsExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static class ExceptionlessWindowsExtensions {
1515
/// <param name="client">The ExceptionlessClient.</param>
1616
/// <param name="showDialog">Controls whether a dialog is shown when an unhandled exception occurs.</param>
1717
public static void Register(this ExceptionlessClient client, bool showDialog = true) {
18-
client.Configuration.UseSessionIdManagementPlugin();
18+
client.Configuration.UseSessions();
1919
client.Startup();
2020
client.SubmitSessionStart();
2121
client.RegisterApplicationThreadExceptionHandler();

Source/Platforms/Wpf/ExceptionlessWpfExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static class ExceptionlessWpfExtensions {
1616
/// <param name="client">The ExceptionlessClient.</param>
1717
/// <param name="showDialog">Controls whether a dialog is shown when an unhandled exception occurs.</param>
1818
public static void Register(this ExceptionlessClient client, bool showDialog = true) {
19-
client.Configuration.UseSessionIdManagementPlugin();
19+
client.Configuration.UseSessions();
2020
client.Startup();
2121
client.SubmitSessionStart();
2222
client.RegisterApplicationThreadExceptionHandler();

Source/Shared/Dependency/DefaultDependencyResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public sealed class DefaultDependencyResolver : IDependencyResolver {
77

88
public object Resolve(Type serviceType) {
99
if (serviceType == null)
10-
throw new ArgumentNullException("serviceType");
10+
throw new ArgumentNullException(nameof(serviceType));
1111

1212
return _container.Resolve(serviceType);
1313
}

Source/Shared/Exceptionless.Portable.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@
6161
<Compile Include="Events\EventSubmittedEventArgs.cs" />
6262
<Compile Include="Plugins\Default\30_DuplicateCheckerPlugin.cs" />
6363
<Compile Include="Plugins\ContextData.cs" />
64+
<Compile Include="Plugins\Default\110 _HeartbeatPlugin.cs" />
65+
<Compile Include="Plugins\Default\100_SessionIdManagerPlugin.cs" />
6466
<Compile Include="Plugins\Default\ActionPlugin.cs" />
6567
<Compile Include="Plugins\Default\10_ConfigurationDefaultsPlugin.cs" />
66-
<Compile Include="Plugins\Default\100_SubmissionMethodPlugin.cs" />
68+
<Compile Include="Plugins\Default\90_SubmissionMethodPlugin.cs" />
6769
<Compile Include="Plugins\Default\40_ReferenceIdPlugin.cs" />
6870
<Compile Include="Plugins\Default\20_SimpleErrorPlugin.cs" />
6971
<Compile Include="Plugins\Default\50_EnvironmentInfoPlugin.cs" />

Source/Shared/Extensions/ExceptionlessConfigurationExtensions.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Exceptionless.Logging;
99
using Exceptionless.Models;
1010
using Exceptionless.Models.Data;
11+
using Exceptionless.Plugins;
1112
using Exceptionless.Storage;
1213

1314
namespace Exceptionless {
@@ -83,6 +84,15 @@ public static string GetInstallId(this ExceptionlessConfiguration config) {
8384
return persistedClientData[INSTALL_ID_KEY];
8485
}
8586

87+
/// <summary>
88+
/// Ensures only a single user session will be created unless you specify a session id via the event builder.
89+
/// NOTE: This should only be used on deskop applications. Using this in web farm scenarios is not advisable.
90+
/// </summary>
91+
public static void UseSessions(this ExceptionlessConfiguration config) {
92+
config.AddPlugin<SessionIdManagerPlugin>();
93+
config.AddPlugin<HeartbeatPlugin>();
94+
}
95+
8696
public static void UseDebugLogger(this ExceptionlessConfiguration config, LogLevel minLogLevel = LogLevel.Info) {
8797
config.Resolver.Register<IExceptionlessLog>(new DebugExceptionlessLog { MinimumLogLevel = minLogLevel });
8898
}

Source/Shared/Models/Client/Event.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ public Event() {
5959

6060
public static class KnownTypes {
6161
public const string Error = "error";
62-
public const string NotFound = "404";
63-
public const string Log = "log";
6462
public const string FeatureUsage = "usage";
63+
public const string Heartbeat = "heart";
64+
public const string Log = "log";
65+
public const string NotFound = "404";
6566
public const string SessionStart = "start";
6667
public const string SessionEnd = "end";
6768
}

Source/Extras/Plugins/90_SessionIdManagerPlugin.cs renamed to Source/Shared/Plugins/Default/100_SessionIdManagerPlugin.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using System;
2-
using System.Collections.Concurrent;
2+
using System.Collections.Generic;
33

44
namespace Exceptionless.Plugins {
5-
[Priority(90)]
5+
[Priority(100)]
66
public class SessionIdManagerPlugin : IEventPlugin {
7-
private ConcurrentDictionary<string, string> _sessionIdMap = new ConcurrentDictionary<string, string>();
7+
private Dictionary<string, string> _sessionIdMap = new Dictionary<string, string>();
88

99
public void Run(EventPluginContext context) {
1010
string sessionId;

0 commit comments

Comments
 (0)