Skip to content
This repository has been archived by the owner on Jan 15, 2021. It is now read-only.

Commit

Permalink
Merge pull request #894 from kendallb/master
Browse files Browse the repository at this point in the history
Lower overhead ADO extension wrapping
  • Loading branch information
avanderhoorn committed Jun 16, 2015
2 parents 0f01bb3 + 7902e23 commit 61857be
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 9 deletions.
38 changes: 31 additions & 7 deletions source/Glimpse.Ado/AlternateType/GlimpseDbProviderFactory.cs
@@ -1,6 +1,8 @@
using System; using System;
using System.Data.Common; using System.Data.Common;
using System.Reflection; using System.Reflection;
using Glimpse.Core.Extensibility;
using Glimpse.Core.Framework;


namespace Glimpse.Ado.AlternateType namespace Glimpse.Ado.AlternateType
{ {
Expand All @@ -10,7 +12,7 @@ public abstract class GlimpseDbProviderFactory : DbProviderFactory


public class GlimpseDbProviderFactory<TProviderFactory> : GlimpseDbProviderFactory, IServiceProvider public class GlimpseDbProviderFactory<TProviderFactory> : GlimpseDbProviderFactory, IServiceProvider
where TProviderFactory : DbProviderFactory where TProviderFactory : DbProviderFactory
{ {
public static readonly GlimpseDbProviderFactory<TProviderFactory> Instance = new GlimpseDbProviderFactory<TProviderFactory>(); public static readonly GlimpseDbProviderFactory<TProviderFactory> Instance = new GlimpseDbProviderFactory<TProviderFactory>();


public GlimpseDbProviderFactory() public GlimpseDbProviderFactory()
Expand All @@ -32,8 +34,13 @@ public override bool CanCreateDataSourceEnumerator
private TProviderFactory InnerFactory { get; set; } private TProviderFactory InnerFactory { get; set; }


public override DbCommand CreateCommand() public override DbCommand CreateCommand()
{ {
return new GlimpseDbCommand(InnerFactory.CreateCommand()); var command = InnerFactory.CreateCommand();
if (IsAdoMonitoringNeeded())
{
return new GlimpseDbCommand(command);
}
return command;
} }


public override DbCommandBuilder CreateCommandBuilder() public override DbCommandBuilder CreateCommandBuilder()
Expand All @@ -42,8 +49,13 @@ public override DbCommandBuilder CreateCommandBuilder()
} }


public override DbConnection CreateConnection() public override DbConnection CreateConnection()
{ {
return new GlimpseDbConnection(InnerFactory.CreateConnection(), this); var connection = InnerFactory.CreateConnection();
if (IsAdoMonitoringNeeded())
{
return new GlimpseDbConnection(connection, this);
}
return connection;
} }


public override DbConnectionStringBuilder CreateConnectionStringBuilder() public override DbConnectionStringBuilder CreateConnectionStringBuilder()
Expand All @@ -53,7 +65,12 @@ public override DbConnectionStringBuilder CreateConnectionStringBuilder()


public override DbDataAdapter CreateDataAdapter() public override DbDataAdapter CreateDataAdapter()
{ {
return new GlimpseDbDataAdapter(InnerFactory.CreateDataAdapter()); var adapter = InnerFactory.CreateDataAdapter();
if (IsAdoMonitoringNeeded())
{
return new GlimpseDbDataAdapter(adapter);
}
return adapter;
} }


public override DbDataSourceEnumerator CreateDataSourceEnumerator() public override DbDataSourceEnumerator CreateDataSourceEnumerator()
Expand Down Expand Up @@ -104,5 +121,12 @@ public object GetService(Type serviceType)


return service; return service;
} }

private static bool IsAdoMonitoringNeeded()
{
return GlimpseConfiguration.GetConfiguredMessageBroker() != null &&
GlimpseConfiguration.GetDefaultRuntimePolicy() != RuntimePolicy.Off &&
GlimpseConfiguration.GetRuntimePolicyStategy()() != RuntimePolicy.Off;
}
} }
} }
28 changes: 26 additions & 2 deletions source/Glimpse.Core/Framework/GlimpseConfiguration.cs
Expand Up @@ -30,7 +30,8 @@ public class GlimpseConfiguration : IGlimpseConfiguration
private ISerializer serializer; private ISerializer serializer;
private ICollection<ITab> tabs; private ICollection<ITab> tabs;
private ICollection<IDisplay> displays; private ICollection<IDisplay> displays;
private Func<RuntimePolicy> runtimePolicyStrategy; private static RuntimePolicy defaultRuntimePolicy;
private static Func<RuntimePolicy> runtimePolicyStrategy;
private string hash; private string hash;


/// <summary> /// <summary>
Expand Down Expand Up @@ -239,7 +240,18 @@ public IResource DefaultResource
/// <value> /// <value>
/// The default runtime policy. /// The default runtime policy.
/// </value> /// </value>
public RuntimePolicy DefaultRuntimePolicy { get; set; } public RuntimePolicy DefaultRuntimePolicy
{
get
{
return defaultRuntimePolicy;
}

set
{
defaultRuntimePolicy = value;
}
}


/// <summary> /// <summary>
/// Gets or sets the endpoint base URI. /// Gets or sets the endpoint base URI.
Expand Down Expand Up @@ -704,5 +716,17 @@ public static IMessageBroker GetConfiguredMessageBroker()
{ {
return messageBroker; return messageBroker;
} }

[Obsolete("HACK: To prevent unnecessary wrapping of SQL connections, commands etc")]
public static RuntimePolicy GetDefaultRuntimePolicy()
{
return defaultRuntimePolicy;
}

[Obsolete("HACK: To prevent unnecessary wrapping of SQL connections, commands etc")]
public static Func<RuntimePolicy> GetRuntimePolicyStategy()
{
return runtimePolicyStrategy;
}
} }
} }

0 comments on commit 61857be

Please sign in to comment.