private static ResponseMessage AddRemovableIndex(string path, string mnt_dir) { DirectoryInfo index_dir = new DirectoryInfo(StringFu.SanitizePath(path)); if (!index_dir.Exists) { ErrorResponse msg; msg = new ErrorResponse(); msg.ErrorMessage = "Adding removable index failed"; msg.Details = String.Format("'{0}' does not exist.", path); return(msg); } // Allow late loading of mount dir ? mnt_dir = StringFu.SanitizePath(mnt_dir); if (!Directory.Exists(mnt_dir)) { ErrorResponse msg; msg = new ErrorResponse(); msg.ErrorMessage = "Adding removable index failed"; msg.Details = String.Format("Mount directory '{0}' does not exist.", mnt_dir); return(msg); } if (removable_queryables.ContainsKey(path)) { ErrorResponse msg; msg = new ErrorResponse(); msg.ErrorMessage = "Adding removable index failed"; msg.Details = String.Format("'{0}' already added.", path); return(msg); } Queryable removable_queryable = null; try { iqueryable_lock.AcquireWriterLock(System.Threading.Timeout.Infinite); removable_queryable = StaticQueryable.LoadRemovableQueryable(index_dir, mnt_dir); } finally { iqueryable_lock.ReleaseWriterLock(); } if (removable_queryable == null) { return(new ErrorResponse("Adding removable index failed")); } iqueryable_to_queryable [removable_queryable.IQueryable] = removable_queryable; removable_queryables [path] = removable_queryable; RemovableIndexResponse resp = new RemovableIndexResponse(); resp.Source = removable_queryable.Name; Log.Info("Adding removable index '{0}' from {1}", resp.Source, path); return(resp); }