Sophie

Sophie

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

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="Advanced Features|Callbacks|Possible Usecases" MadCap:InPreviewMode="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" MadCap:PathToHelpSystem="../../../../" MadCap:HelpSystemFileName="index.xml" MadCap:SearchType="Stem">
    <head><title>Committed Event Example</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#advanced_topics/callbacks/possible_usecases/committed_event_example.htm" style="">Open topic with navigation</a>
        </p>
        <div class="MCBreadcrumbsBox"><span class="MCBreadcrumbsPrefix">You are here: </span><a class="MCBreadcrumbsLink" href="../../../advanced_topics.htm">Advanced Features</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../../callbacks.htm">Callbacks</a><span class="MCBreadcrumbsDivider"> &gt; </span><a class="MCBreadcrumbsLink" href="../possible_usecases.htm">Possible Usecases</a><span class="MCBreadcrumbsDivider"> &gt; </span><span class="MCBreadcrumbs">Committed Event Example</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>Committed Event Example</h1>
        <p>Committed callbacks can be used in various scenarios:</p>
        <ul>
            <li value="1">Backup on commit.</li>
            <li value="2">Database replication on commit.</li>
            <li value="3">Client database synchronization.</li>
        </ul>
        <p>This example shows you how to refresh objects on a client on commits.</p>
        <p>When several clients are working
on the same objects it is possible that the data will be outdated on a client. You can use the committed-event refresh object on each commit. </p>
        <p>When a client commit will trigger a committed event on all clients. In order to refresh the object, register for the committed event. In the commit-event-handler, refresh the object which have been modified.</p>
        <div class="codesnippet" MadCap:conditions="Primary.c#">
            <pre class="prettyprint" xml:space="preserve">IEventRegistry events = EventRegistryFactory.ForObjectContainer(container);
events.Committed += 
    delegate(object sender, CommitEventArgs args)
        {
            foreach (LazyObjectReference updated in args.Updated)
            {
                object obj = updated.GetObject();
                args.ObjectContainer().Ext().Refresh(obj, 1);
            }
        };</pre>
            <div class="codesnippet-meta">RefreshingObjects.cs: On the updated-event we refresh the objects
			<div class="codedownload"><a href="../../../CodeExamples/clientserver/refresh/Example-clientserver-refresh-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 events As IEventRegistry = EventRegistryFactory.ForObjectContainer(container)
AddHandler events.Committed, AddressOf HandleUpdate</pre>
            <div class="codesnippet-meta">RefreshingObjects.vb: On the updated-event we refresh the objects
			<div class="codedownload"><a href="../../../CodeExamples/clientserver/refresh/Example-clientserver-refresh-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>
        <div class="codesnippet" MadCap:conditions="Primary.VB.NET">
            <pre class="prettyprint lang-vb" MadCap:conditions="Primary.Online" xml:space="preserve">Private Shared Sub HandleUpdate(ByVal sender As Object, ByVal args As CommitEventArgs)
    For Each updated As LazyObjectReference In args.Updated
        Dim obj As Object = updated.GetObject()
        args.ObjectContainer().Ext().Refresh(obj, 1)
    Next
End Sub</pre>
            <div class="codesnippet-meta">RefreshingObjects.vb: The refresh-handler
			<div class="codedownload"><a href="../../../CodeExamples/clientserver/refresh/Example-clientserver-refresh-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>You can register such a event-handler for each client. The committed event is transferred to each client. Note that this requires a lot of network-traffic to notify all clients and transfer the changes.</p>
        <p>When working with committed events you should remember that
the listener is called on a separate thread, which needs to be synchronized
with the rest of the application.</p>
        <script type="text/javascript" src="../../../SkinSupport/MadCapBodyEnd.js">
        </script>
    </body>
</html>