public override void Eval(Client c, IFSObject obj) { base.Eval(c, obj); var srcFile = obj as BaseFile; c.Log(LogLevel.Info, "Отсылаю команду \"удалить файл {0}\"", srcFile.Name); c.Environment.SendToAll(new DeleteFSObjMessage(srcFile)); }
public override void Eval(Client c, IFSObject obj) { base.Eval(c, obj); var srcFile = obj as BaseFile; if (c.GetFileReplics(srcFile).Contains(c))/// srcFile.InReplics(c.Id)) { var owner = c.GetFileOwner(srcFile); c.Log(LogLevel.Info, "Получение реплики для {0}", srcFile.Name); if (owner != null && owner.IsRemote) (owner as RemoteClient).Send(new DownloadFileMessage(srcFile, null)); } }
public override void Eval(Client c, IFSObject obj) { base.Eval(c, obj); var srcFile = obj as BaseFile; c.Log(LogLevel.Info, "становлюсь координатором {0}", srcFile.Name); srcFile.SetOwner(c.Id.ToString()); lock (c.RemoteClients) { foreach (var r in c.GetRandomClients(2, c.RemoteClients)) srcFile.AddReplica(r.Id.ToString()); } c.Log(LogLevel.Info, "Рассылаю обновленную метаинформацию", srcFile.Name); env.SendToAll(new NewFileMessage(srcFile)); }
public virtual void Eval(Client c, IFSObject obj) { this.c = c; }
public IFSObject Delete(IFSObject iFSObject, FSObjectEvents eventtype) { // if (ReadOnly) return null; lock (RootDir.FS) { ///check exists /// if (Find(iFSObject.RelativePath) == null) { throw new Exception(string.Format("Cant found {0} ", iFSObject.Name)); return null; } if (iFSObject is BaseFile) (iFSObject as BaseFile).Delete(); if (iFSObject is BaseFolder) { var its = (iFSObject as BaseFolder).Items; while (its.Count > 0) Delete(its[0], eventtype); (iFSObject as BaseFolder).Delete(eventtype); } //remove sourcelist fs if (iFSObject is BaseFile) { var f = iFSObject as BaseFile; f.ParentFolder.Files.Remove(f); } else if (iFSObject is BaseFolder) { var f = iFSObject as BaseFolder; (f.ParentFolder as BaseFolder).Folders.Remove(f); } if (iFSObject is BaseFile) if (_OnFileEvent != null) _OnFileEvent(iFSObject as BaseFile, eventtype); if (iFSObject is BaseFolder) if (_OnFolderEvent != null) _OnFolderEvent(iFSObject as BaseFolder, eventtype); return iFSObject; } }
public DeleteFSObjMessage(IFSObject obj) { RelativePath = obj.RelativePath; }