private void UnregisterUpdaterOnClosing(object source, DocumentClosingEventArgs args) { try { Document doc = args.Document; if (doc.IsWorkshared) { string centralPath = FileInfoUtil.GetCentralFilePath(doc); if (!string.IsNullOrEmpty(centralPath)) { SingleSessionMonitor.CloseFile(centralPath); if (configDictionary.ContainsKey(centralPath)) { Configuration configFound = configDictionary[centralPath]; foreach (ProjectUpdater updater in configFound.updaters) { if (!updater.isUpdaterOn) { continue; } if (updater.updaterId.ToLower() == doorUpdater.UpdaterGuid.ToString().ToLower()) { doorUpdater.Unregister(doc); } else if (updater.updaterId.ToLower() == dtmUpdater.UpdaterGuid.ToString().ToLower()) { dtmUpdater.Unregister(doc); } else if (updater.updaterId.ToLower() == revisionUpdater.UpdaterGuid.ToString().ToLower()) { revisionUpdater.Unregister(doc); } } configDictionary.Remove(centralPath); } if (SingleSessionMonitor.OpenedDocuments.Count == 0) { DisconnectSocket(); } } } } catch (Exception ex) { LogUtil.AppendLog("UnregisterUpdaterOnClosing:" + ex.Message); } }
private void CollectConfigurationOnOpening(object source, DocumentOpeningEventArgs args) { try { string pathName = args.PathName; if (!string.IsNullOrEmpty(pathName) && args.DocumentType == DocumentType.Project) { BasicFileInfo fileInfo = BasicFileInfo.Extract(pathName); if (fileInfo.IsWorkshared) { if (!socketOn) { ConnectSocket(); } string centralPath = fileInfo.CentralPath; if (!string.IsNullOrEmpty(centralPath)) { //serch for config LogUtil.AppendLog(centralPath + " Opening."); Configuration configFound = ServerUtil.GetConfigurationByCentralPath(centralPath); if (null != configFound) { //check if the single session should be activated if (SingleSessionMonitor.CancelOpening(centralPath, configFound)) { if (args.Cancellable) { SingleSessionWindow ssWindow = new SingleSessionWindow(centralPath); if ((bool)ssWindow.ShowDialog()) { args.Cancel(); return; } } } if (configDictionary.ContainsKey(centralPath)) { configDictionary.Remove(centralPath); } configDictionary.Add(centralPath, configFound); Project projectFound = ServerUtil.GetProjectByConfigurationId(configFound._id); if (null != projectFound) { if (projectDictionary.ContainsKey(centralPath)) { projectDictionary.Remove(centralPath); } projectDictionary.Add(centralPath, projectFound); } LogUtil.AppendLog("Configuration Found: " + configFound._id); } else { //not a seed file, just check if the single session is activated if (SingleSessionMonitor.SingleSessionActivated) { SingleSessionWindow ssWindow = new SingleSessionWindow(centralPath); if ((bool)ssWindow.ShowDialog()) { args.Cancel(); return; } } } } } } } catch (Exception ex) { string message = ex.Message; LogUtil.AppendLog("CollectConfigurationOnOpening:" + ex.Message); } }