Skip to content
Browse files

from head

svn path=/branches/mono-1-1-10/mcs/; revision=54125
  • Loading branch information...
1 parent 5237044 commit c064f9f178339e54686526a3dd8bfd0ae7b64006 @gonzalop gonzalop committed
View
7 mcs/class/System/System.IO/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
+
+ * FAMWatcher.cs:
+ * FileSystemWatcher.cs: use libgamin-1.so.0 instead of libfam.so.0 when
+ the runtime finds libgamin. On SUSE libgamin and libfam are not the same
+ libraries (on debian, they are just the same and there's no fam-server).
+
2005-06-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
* FAMWatcher.cs: reverting my patch. Seems that something got
View
78 mcs/class/System/System.IO/FAMWatcher.cs
@@ -77,13 +77,14 @@ class FAMWatcher : IFileWatcher
static FAMConnection conn;
static Thread thread;
static bool stop;
+ static bool use_gamin;
private FAMWatcher ()
{
}
// Locked by caller
- public static bool GetInstance (out IFileWatcher watcher)
+ public static bool GetInstance (out IFileWatcher watcher, bool gamin)
{
if (failed == true) {
watcher = null;
@@ -95,6 +96,7 @@ public static bool GetInstance (out IFileWatcher watcher)
return true;
}
+ use_gamin = gamin;
watches = Hashtable.Synchronized (new Hashtable ());
requests = Hashtable.Synchronized (new Hashtable ());
if (FAMOpen (out conn) == -1) {
@@ -335,25 +337,79 @@ void ProcessEvents ()
FAMClose (ref conn);
}
- [DllImport ("libfam.so.0")]
- extern static int FAMOpen (out FAMConnection fc);
+ static int FAMOpen (out FAMConnection fc)
+ {
+ if (use_gamin)
+ return gamin_Open (out fc);
+ return fam_Open (out fc);
+ }
+
+ static int FAMClose (ref FAMConnection fc)
+ {
+ if (use_gamin)
+ return gamin_Close (ref fc);
+ return fam_Close (ref fc);
+ }
+
+ static int FAMMonitorDirectory (ref FAMConnection fc, string filename, out FAMRequest fr, IntPtr user_data)
+ {
+ if (use_gamin)
+ return gamin_MonitorDirectory (ref fc, filename, out fr, user_data);
+ return fam_MonitorDirectory (ref fc, filename, out fr, user_data);
+ }
+
+ static int FAMCancelMonitor (ref FAMConnection fc, ref FAMRequest fr)
+ {
+ if (use_gamin)
+ return gamin_CancelMonitor (ref fc, ref fr);
+ return fam_CancelMonitor (ref fc, ref fr);
+ }
+
+ static int FAMPending (ref FAMConnection fc)
+ {
+ if (use_gamin)
+ return gamin_Pending (ref fc);
+ return fam_Pending (ref fc);
+ }
+
+
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMOpen")]
+ extern static int fam_Open (out FAMConnection fc);
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMClose")]
+ extern static int fam_Close (ref FAMConnection fc);
- [DllImport ("libfam.so.0")]
- extern static int FAMClose (ref FAMConnection fc);
+ [DllImport ("libfam.so.0", EntryPoint="FAMMonitorDirectory")]
+ extern static int fam_MonitorDirectory (ref FAMConnection fc, string filename,
+ out FAMRequest fr, IntPtr user_data);
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMCancelMonitor")]
+ extern static int fam_CancelMonitor (ref FAMConnection fc, ref FAMRequest fr);
+
+ [DllImport ("libfam.so.0", EntryPoint="FAMPending")]
+ extern static int fam_Pending (ref FAMConnection fc);
- [DllImport ("libfam.so.0")]
- extern static int FAMMonitorDirectory (ref FAMConnection fc, string filename,
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMOpen")]
+ extern static int gamin_Open (out FAMConnection fc);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMClose")]
+ extern static int gamin_Close (ref FAMConnection fc);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMMonitorDirectory")]
+ extern static int gamin_MonitorDirectory (ref FAMConnection fc, string filename,
out FAMRequest fr, IntPtr user_data);
- [DllImport ("libfam.so.0")]
- extern static int FAMCancelMonitor (ref FAMConnection fc, ref FAMRequest fr);
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMCancelMonitor")]
+ extern static int gamin_CancelMonitor (ref FAMConnection fc, ref FAMRequest fr);
+
+ [DllImport ("libgamin-1.so.0", EntryPoint="FAMPending")]
+ extern static int gamin_Pending (ref FAMConnection fc);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern static int InternalFAMNextEvent (ref FAMConnection fc, out string filename,
out int code, out int reqnum);
- [DllImport ("libfam.so.0")]
- extern static int FAMPending (ref FAMConnection fc);
}
}
View
18 mcs/class/System/System.IO/FileSystemWatcher.cs
@@ -115,13 +115,21 @@ void InitWatcher ()
mode = InternalSupportsFSW ();
bool ok = false;
- if (mode == 3)
- ok = KeventWatcher.GetInstance (out watcher);
- else if (mode == 2)
- ok = FAMWatcher.GetInstance (out watcher);
- else if (mode == 1)
+ switch (mode) {
+ case 1: // windows
ok = DefaultWatcher.GetInstance (out watcher);
//ok = WindowsWatcher.GetInstance (out watcher);
+ break;
+ case 2: // libfam
+ ok = FAMWatcher.GetInstance (out watcher, false);
+ break;
+ case 3: // kevent
+ ok = KeventWatcher.GetInstance (out watcher);
+ break;
+ case 4: // libgamin
+ ok = FAMWatcher.GetInstance (out watcher, true);
+ break;
+ }
if (mode == 0 || !ok)
DefaultWatcher.GetInstance (out watcher);

0 comments on commit c064f9f

Please sign in to comment.
Something went wrong with that request. Please try again.