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 ClientWindow(Client c) { InitializeComponent(); myGrid.Children.Add(new ClientControl(c)); Header = c.Id.ToString(); }
public ClientControl(Client client) { InitializeComponent(); myDispatcher = Dispatcher; DataContext = this; c = client as Client; c.StateChanged += c_StateChanged; cpanel.IsEnabled = c.State == ClientStates.Online; Logs = new ObservableCollection<string>(); foreach (var it in c.Logs) Logs.Add(it); c.Logs.CollectionChanged += Logs_CollectionChanged; //Header = c.Id.ToString(); RemoteClients = new ObservableCollection<RemoteClient>(); foreach (var it in c.RemoteClients) RemoteClients.Add(it); c.RemoteClients.CollectionChanged += RemoteClients_CollectionChanged; c.FileSystem.OnFileEvent += synchfiles; c.FileSystem.OnFolderEvent += synchfolders; label1.Content = c.State.ToString() + "(" + (c.Synchronized ? "Synchronized" : "Not synchronized") + ")"; real_curdir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\test"; v_curdir = c.FileSystem.RootDir; }
private void Button_Click(object sender, RoutedEventArgs e) { i = (char)(((byte)i)+1); var c = new Client(i.ToString()); cts.Add(c); Clients.Add(new ClientWindow(c)); }
public override void OnRecived(RemoteClient from, Client to) { base.OnRecived(from, to); Environment.ParentClient.Log(LogLevel.Info, "{0}: Дать синхронизацию", from); var env = Environment; if (to.Synchronized && env.IsNearest(from, to, to.RemoteClients.Where(x => x.Synchronized).ToList())) from.Send(new SyncMessage()); }
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 ClientSettings(Client c) : this() { this.c = c; var filename = Path.Combine(c.MyDir.FullName, "settings.dat"); if (File.Exists(filename)) { var tmp = (ClientSettings)JsonConvert.DeserializeObject(File.ReadAllText(filename), typeof(ClientSettings)); RemainingClients = new ObservableCollection<string>(tmp.RemainingClients); RemainingClients.CollectionChanged += RemainingClients_CollectionChanged; WasInSynchronizedGroup = tmp.WasInSynchronizedGroup; } Save(); }
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 MainWindow() { InitializeComponent(); this.Closed += MainWindow_Closed; DataContext = this; Clients = new System.Collections.ObjectModel.ObservableCollection<ClientWindow>(); var a = new Client("A"); var b = new Client("B"); Clients.Add(new ClientWindow(a)); Clients.Add(new ClientWindow(b)); cts.Add(a); cts.Add(b); mytc.SelectedIndex = 0; }
public virtual void Eval(Client c, IFSObject obj) { this.c = c; }
public override void OnRecived(RemoteClient from, Client to) { base.OnRecived(from, to); from.Send(new SyncMessage()); }