示例#1
0
文件: Rules.cs 项目: DmT021/Urfunet
 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));
 }
示例#2
0
        public ClientWindow(Client c)
        {
            InitializeComponent();

            myGrid.Children.Add(new ClientControl(c));
            Header = c.Id.ToString();
        }
示例#3
0
        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;
        }
示例#4
0
 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));
 }
示例#5
0
        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());
        }
示例#6
0
文件: Rules.cs 项目: DmT021/Urfunet
 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));
     }
 }
示例#7
0
        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();
        }
示例#8
0
文件: Rules.cs 项目: DmT021/Urfunet
        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));
        }
示例#9
0
        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;
        }
示例#10
0
文件: Rules.cs 项目: DmT021/Urfunet
 public virtual void Eval(Client c, IFSObject obj)
 {
     this.c = c;
 }
示例#11
0
 public override void OnRecived(RemoteClient from, Client to)
 {
     base.OnRecived(from, to);
     from.Send(new SyncMessage());
 }