Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
        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");
        }