Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2e9c43658e374d290a2de15d25134ac8 > files > 870

db4o-doc-8.0-1.fc15.i686.rpm

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="2" MadCap:lastHeight="120" MadCap:lastWidth="624" MadCap:disableMasterStylesheet="true" MadCap:tocPath="Tuning|Diagnostics" MadCap:InPreviewMode="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="index.xml" MadCap:SearchType="Stem">
    <head><title>Diagnostic Messages Filter	</title>
        <script type="text/javascript">/* <![CDATA[ */
window.onload = function(){
	var pathToFlash = $('html').attr('MadCap:PathToHelpSystem') + 'Content/Resources/Code/ZeroClipboard.swf';
	ZeroClipboard.setMoviePath(pathToFlash);
			
	function bindToClipBord(element,content){
		var clip = new ZeroClipboard.Client();
		clip.setText(content);
		clip.glue(element);
	};
		
	if(location.protocol==='file:'){
		$('.copylink-marker').remove();
	} else{
			$('.copylink-marker').each(function(){
				var text = $(this).parent().parent().children('.prettyprint').html();
				$(this).hover(function(){
					bindToClipBord(this,text);
				},
				function(){});
			});	
	}		
	prettyPrint();	
};
                /* ]]> */</script>
        <link href="../../SkinSupport/MadCap.css" rel="stylesheet" />
        <link href="../../Resources/Stylesheets/OnlineStyle.css" rel="stylesheet" />
        <script src="../../Resources/Code/prettify.js">
        </script>
        <script src="../../Resources/Code/lang-vb.js">
        </script>
        <script src="../../Resources/Code/jquery.min.js">
        </script>
        <script src="../../Resources/Code/ZeroClipboard.js">
        </script>
        <script src="../../SkinSupport/MadCapAll.js" type="text/javascript">
        </script>
    </head>
    <body>
        <p class="MCWebHelpFramesetLink" style="display: none;"><a href="../../../index_CSH.html#tuning/diagnostics/diagnostic_messages_filter.htm" style="">Open topic with navigation</a>
        </p>
        <div class="MCBreadcrumbsBox"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="../../tuning.htm">Tuning</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../diagnostics.htm">Diagnostics</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">Diagnostic Messages Filter</span>
        </div>
        <p>
            <script type="text/javascript">/*<![CDATA[*/document.write('<a href="' + location.href +'">');
				document.write("Direct Link");
			document.write('</a>');/*]]>*/</script>
        </p>
        <p>
        </p>
        <h1>Diagnostic Messages Filter</h1>
        <p>The standard listeners can potentially produce quite a lot of messages. By writing your own DiagnosticListener you can filter that information.</p>
        <p>On the stage of application tuning you can be interested in optimizing performance through indexing. Diagnostics can help you with giving information about queries that are running on un-indexed fields. By having this information you can decide which queries are frequent and heavy and should be indexed, and which have little performance impact and do not need an index. Field indexes dramatically improve query performance but they may considerably reduce storage and update performance. </p>
        <p>In order to get rid of all unnecessary diagnostic information and concentrate on indexes let's create special diagnostic listener:</p>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">private class DiagnosticFilter : IDiagnosticListener
{
    private readonly ICollection&lt;Type&gt; filterFor;
    private readonly IDiagnosticListener target;

    public DiagnosticFilter(IDiagnosticListener target, params Type[] filterFor)
    {
        this.target = target;
        this.filterFor = new List&lt;Type&gt;(filterFor);
    }

    public void OnDiagnostic(IDiagnostic diagnostic)
    {
        Type type = diagnostic.GetType();
        if (filterFor.Contains(type))
        {
            target.OnDiagnostic(diagnostic);
        }
    }
}</pre>
            <div class="codesnippet-meta">DiagnosticsExamples.cs: A simple message filter
			<div class="codedownload"><a href="../../CodeExamples/tuning/diagnostics/Example-tuning-diagnostics-csharp.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">Private Class DiagnosticFilter
    Implements IDiagnosticListener
    Private ReadOnly filterFor As ICollection(Of Type)
    Private ReadOnly target As IDiagnosticListener

    Public Sub New(ByVal target As IDiagnosticListener, ByVal ParamArray filterFor As Type())
        Me.target = target
        Me.filterFor = New List(Of Type)(filterFor)
    End Sub

    Public Sub OnDiagnostic(ByVal diagnostic As IDiagnostic) _
        Implements IDiagnosticListener.OnDiagnostic

        Dim type As Type = diagnostic.[GetType]()
        If filterFor.Contains(type) Then
            target.OnDiagnostic(diagnostic)
        End If
    End Sub
End Class</pre>
            <div class="codesnippet-meta">DiagnosticsExamples.vb: A simple message filter
			<div class="codedownload"><a href="../../CodeExamples/tuning/diagnostics/Example-tuning-diagnostics-vb.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <p>After that we can use the filter-listener. It takes two arguments. The first one is a regular listener, the second is a list of all messages which are passed through.</p>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">IEmbeddedConfiguration configuration = Db4oEmbedded.NewConfiguration();
configuration.Common.Diagnostic
    .AddListener(new DiagnosticFilter(new DiagnosticToConsole(), typeof(LoadedFromClassIndex)));</pre>
            <div class="codesnippet-meta">DiagnosticsExamples.cs: Filter for unindexed fields
			<div class="codedownload"><a href="../../CodeExamples/tuning/diagnostics/Example-tuning-diagnostics-csharp.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">Dim configuration As IEmbeddedConfiguration = Db4oEmbedded.NewConfiguration()
configuration.Common.Diagnostic _
    .AddListener(New DiagnosticFilter(New DiagnosticToConsole(), GetType(LoadedFromClassIndex)))</pre>
            <div class="codesnippet-meta">DiagnosticsExamples.vb: Filter for unindexed fields
			<div class="codedownload"><a href="../../CodeExamples/tuning/diagnostics/Example-tuning-diagnostics-vb.zip" class="codedownload" MadCap:conditions="Primary.Online">Download Code</a></div><div class="codedownload copylink-marker" MadCap:conditions="Primary.Online"><a href="#copy">Copy Code</a></div></div>
        </div>
        <p>&#160;</p>
        <script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>