public bool Update(DmHolder dh) { try { DmHolder dmHolder = _list.Find(d => d.Identifier == dh.Identifier); if (dmHolder != null) { dmHolder.Name = dh.Name; dmHolder.SourcePath = dh.SourcePath; dmHolder.MirrorPath = dh.MirrorPath; dmHolder.Buffer = dh.Buffer; dmHolder.Timer = dh.Timer; } else { _list.Add(dh); _list.Sort((x, y) => y.Identifier.CompareTo(x.Identifier)); } return(true); } catch (Exception) { return(false); } }
public static List <DmHolder> readDMlist() { List <DmHolder> list = new List <DmHolder>(); if (System.IO.File.Exists("mirrors.xml")) { XmlTextReader reader = new XmlTextReader("mirrors.xml"); reader.Read(); //int i = 0; while (reader.Read()) { XmlNodeType type = reader.NodeType; if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "directorymirror") { DmHolder dme = new DmHolder(); dme.Name = reader.GetAttribute("name"); dme.SourcePath = reader.GetAttribute("source"); dme.MirrorPath = reader.GetAttribute("mirror"); dme.Buffer = Convert.ToInt32(reader.GetAttribute("buffer")); dme.Timer = Convert.ToDouble(reader.GetAttribute("timer")); dme.Identifier = Convert.ToInt64(reader.GetAttribute("identifier")); list.Add(dme); } } } reader.Close(); } return(list); }
public bool KillDM(long identifier) { DmHolder dmHolder = _list.Find(d => d.Identifier == identifier); if (dmHolder != null) { if (dmHolder.IsRunning) { dmHolder.DM.Dispose(); dmHolder.DM = null; return(true); } } return(false); }
public bool Delete(long identifier) { try { DmHolder dmHolder = _list.Find(d => d.Identifier == identifier); if (dmHolder != null) { _list.Remove(dmHolder); _list.Sort((x, y) => y.Identifier.CompareTo(x.Identifier)); return(true); } return(false); } catch (Exception) { return(false); } }
public string StartDM(string name, bool mirrorMode, bool showFSWevents, bool showFSWErrors, bool showDMevents, bool showDMerrors, int rebuildOption, long identifier, bool trackChanged) { DmHolder dmHolder = _list.Find(d => d.Identifier == identifier); if (dmHolder != null) { if (!IOmethods.DirectoryExists(dmHolder.SourcePath)) { return("La carpeta principal no existe"); } if (!dmHolder.IsRunning) { if (mirrorMode) { if (!IOmethods.DirectoryExists(dmHolder.MirrorPath)) { return("La carpeta espejo no existe"); } if (rebuildOption == 0) { hardMirrorRebuild(dmHolder.SourcePath, dmHolder.MirrorPath); } else if (rebuildOption == 1) { softMirrorRebuild(dmHolder.SourcePath, dmHolder.MirrorPath); } else { deleteSourceAndMirror(dmHolder.SourcePath, dmHolder.MirrorPath); } } dmHolder.DM = new DirectoryMirror { FriendlyName = dmHolder.Name, SourceDirectory = dmHolder.SourcePath, MirrorDirectory = dmHolder.MirrorPath, InternalBufferSize = dmHolder.Buffer, Milliseconds = dmHolder.Timer, MirrorMode = mirrorMode }; if (showFSWevents) { dmHolder.DM.SourceEvent += new FSWabstract.SourceEventDelegate(SourceEvent); } if (showFSWErrors) { dmHolder.DM.SourceError += new FSWabstract.SourceErrorDelegate(SourceError); } if (showDMevents) { dmHolder.DM.DMinfoEvent += new DirectoryMirror.MirrorActionDelegate(MirrorEvent); } if (showDMerrors) { dmHolder.DM.DMerrorEvent += new DirectoryMirror.MirrorErrorDelegate(MirrorError); } } dmHolder.DM.Start(); dmHolder.DM.TrackChangedEvent(trackChanged); return("ok"); } return("No pudo comenzar"); }