Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 4d23623bea6c76abcb8e3e9e9bc5df0d > files > 22

gamin-0.1.10-8.fc14.x86_64.rpm

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><style type="text/css">
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
</style><title>Differences from FAM</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>Gamin the File Alteration Monitor</h1><h2>Differences from FAM</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="index.html">Home</a></li><li><a href="overview.html">Overview</a></li><li><a href="using.html">Using gamin</a></li><li><a href="config.html">Configuration</a></li><li><a href="news.html">News</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="python.html">Python bindings</a></li><li><a href="devel.html">Developers informations</a></li><li><a href="contacts.html">Contacts</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="debug.html">Debugging Gamin</a></li><li><a href="security.html">Security</a></li><li><a href="internals.html">Internals</a></li><li><a href="differences.html">Differences from FAM</a></li><li><a href="ChangeLog.html">ChangeLog</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/gamin-list/">Mail archive</a></li><li><a href="http://oss.sgi.com/projects/fam/">FAM project</a></li><li><a href="sources/">sources</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=gamin&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=NEEDINFO&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;form_name=query">GNOME Bugzilla</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&amp;product=Red+Hat+Enterprise+Linux&amp;component=fam&amp;component=gamin&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=MODIFIED&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;Search=Search">Red Hat Bugzilla</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><h3>Differences</h3><p>gamin should be binary and source code compatible with FAM 2.6.8.
However there are some differences and at least one significant 
extension.</p><p>The differences are in term of implementation:</p><ul><li>No system wide server, instead it relies on per user server, if
needed started on demand by the fam/gamin library.</li>
<li>The functions FAMSuspendMonitor(), FAMResumeMonitor() and
    FAMMonitorCollection() are not implemented. They all raise problem
    of accumulating unbounded state on the server side and better handled
    at the client level if needed.</li>
<li>FAMErrno is provided, but the values may not match their FAM
counterparts, similary FamErrlist[] error messages are different.</li>
<li>No NFS support based on specific RPC and server, instead gamin monitors
only the state as reported locally by the kernel, not that locally done
changes on NFS or AFS filesystems are reported on Linux which is the
main criteria when having user home directories on such filesystems.</li>
</ul><h3>Extension(s)</h3><p>We tried to limit changes in gamin but a number of features were
deemed more important than sticking to the exact same set than FAM:</p><ul><li>Support for inotify on Linux if compiled in the kernel, this override
most of the deficiencies related to dnotify.</li>
<li>A lot of debugging support was added both for client and server
see the <a href="debug.html">specific page</a> on the matter.</li>
<li>The possibility to block Exist/EndExists callbacks when monitoring
directories based on a new API, see below</li>
</ul><p>FAM when monitoring a directory, immediately send a set of events
listing the files found in that directory, this ends up with an EndExists
events. However when monitoring hierarchy it's usually far more efficient
and simple to do the scanning on the client side and ignore those 
directory listing events from the FAM server (the only drawback is a potential
mismatch of the directory content between the FAM server and the client).
In such a case, all those events are not only superfluous but they are
also dangerous since they can lead to a congested pipe to the client
which is just scanning directories and not listening to FAM. To that
intent we added in gamin 0.0.23 a new API disabling the Exists/EndExists
sequences when watching directories for a given FAMConnection:</p><pre>int FAMNoExists(FAMConnection *fc)</pre><p>and with the Python bindings:</p><pre>WatchMonitor.no_exists()</pre><p>This feature is also used when the client reconnect to the server
after a connection loss or if the server died.</p><p>Calling it changes the protocol as described below, directory 
monitoring from that call will only get mutation events and not
the initial lists:</p><p><img src="callbacks.gif" alt="The NoExists behaviour change on callbacks" /></p><p><a href="contacts.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>