DumontEXE 0.0.1
Public Member Functions
cmcSyncProxy Class Reference

Synchronization Proxy. More...

#include <cmcSyncProxy.h>

Inheritance diagram for cmcSyncProxy:

List of all members.

Public Member Functions

 cmcSyncProxy (const cmcSyncProxy &copy)
 Copy Constructor.
virtual ~cmcSyncProxy ()
 Default Destructor.

Detailed Description

Synchronization Proxy.

The Synchronization Proxy is a tool that is designed to add an additional transport layer to the existing Commence synchronization engine. Why would you want to do this, you ask? Because, the synchronization engine, as robust as it is, suffers a few, slight, defficiencies.

One of these is the lack of a vbScript interface. There are times when being able to check the status of a synchronization client would be a very handy thing to do. Also, it would be very handy to disable a single client's synchronization process either from the client or the server. There are times, when working on a large dataset, on a client, that having a synchronization event occur right in the middle can be a real problem. Especially if the sync packet is large, or if it occurs over a slow ftp connection. With the cmcSyncProxy it is possible to disable syncing either from the client or from the server, for any client or for all clients.

There is also a lack of ability to check the status of client synchronization at any time. In order to do this one has to check the sync directories and workgroup directories looking for stale sync packets or failure packets. This can require a great deal of scripting and coordination. The cmcDatabaseApi makes checking sync status a trivial matter.

Another problem is when the synchronization of a client fails, at the client, due to network difficulties. This is especially prevalent over ftp where connections can be slow and quite sporatic. Commence generates errors in synchronization very quickly and cannot be restarted without user intervention.

With the cmcDatabaseApi::cmcSyncProxy module, all synchronization is marshalled through the proxy intermediary. When a commence database (client or server) outputs a sync packet, it is set to output this packet to a local directory, rather than a shared network resource. The cmcSyncProxy picks up this packet and forwards it along to the shared network resource for that client. This shared resource can be different for each client as well, or to say it another way, different clients can use different network directories or different ftp servers. The sync proxy also checks the repositories (client and server) for incomming packets, and when it sees one, it picks it up and deposits it into the local directory for that database. In this configuration, the database (either client or server) is never required to access any network resources directly. The proxy has robust error handling and recovery and even provides for vbScript and agent notification of various states and events.

A diagram for the process might look something like this:

dot_inline_dotgraph_4.png

In the above example, a single server is syncing to six clients, all through network resources of some sort. These network resources can be shared drives, ftp sites, direct IP connections and so on. The client and server executables are configured to sync to a local directory on their immediate hard drive. Then, the cmcSyncProxy module is configured to watch the local directory for each copy of Commence, and it is also configured to watch the shared network resource. The client and server never access the network directly. In this configuration the syncProxy can make more intelligent decisions about when syncing should be allowed, and when an error actually occurs and what to do about it. The system can be easily configured to send email notifications to whomever regarding the failure of a sync process.

Todo:
Disable Syncing. The application object should include a synchronization control module that would provide for the ability to disable syncing through scripting. It can accomplish this by subclassing admineng.dll and overriding the various synchronization functions in it, but this would probably be complicated. Another option is for Dumont to provide its own synchronization proxy. The advantage to the synchronization proxy is that no disturbance to the existing synchronization engine is done. Also, a synchronization proxy would provide a much needed fix to the ftp synchronization engine which falters constantly from disconnects. One particularily annoying "feature" of the synchronization engine is that after a failure user intervention is required to get synchrnization going again. A sync proxy in Dumont would fix this. The sync proxy would move sync packets from a database (client or server) into and out of a shared sync proxy repository. It would be a trivial matter, then, to turn the proxy off to disable syncing. The proxy could also handle other media types beyond network share and ftp if desired.

Definition at line 145 of file cmcSyncProxy.h.


Constructor & Destructor Documentation

cmcSyncProxy ( const cmcSyncProxy copy)

Copy Constructor.

Definition at line 29 of file cmcSyncProxy.cpp.

~cmcSyncProxy ( ) [virtual]

Default Destructor.

This destructor handles cleanup of the object.

Definition at line 35 of file cmcSyncProxy.cpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties




~ ~ ~ ~ ~ ~
Source Code without Comments is like a Cranberry Garland
without the berries. Comment your Code!
 
Commence Database User Support Group Forum
http://newsgroup.showoff-db.org/
~ ~ ~ ~ ~ ~
Author: Mark Petryk
Lorimark Solutions, LLC
mark@lorimarksolutions.com