示例#1
0
        /// <summary>
        /// Creates service according to config info
        /// </summary>
        /// <param name="configInfo"></param>
        /// <returns></returns>
        public UserService LoadService(ElementHelper configInfo)
        {
            UserService     service;
            Communicator    communicator;
            IUserRepository repository = new UserRepository();

            if (configInfo.ServerType == "master")
            {
                Sender <BllUser> sender = new Sender <BllUser>();
                communicator = new Communicator(sender);
                service      = new MasterUserService(repository);
            }

            else if (configInfo.ServerType == "slave")
            {
                Receiver <BllUser> receiver = new Receiver <BllUser>(configInfo.IpEndPoint.Address, configInfo.IpEndPoint.Port);
                communicator = new Communicator(receiver);
                service      = new SlaveUserService(repository);
            }
            else
            {
                throw new ArgumentException("Wrong service type!");
            }

            service.Communicator = communicator;

            return(service);
        }
示例#2
0
        public static void Main(string[] args)
        {
            var appSettings = ConfigurationManager.AppSettings;
            var myappSet    = (dynamic)ConfigurationManager.GetSection("Slaves");

            List <KeyValuePair <int, string> > PortsAndHosts = new List <KeyValuePair <int, string> >();

            for (int i = 0; i < Int32.Parse(myappSet["slavesNum"]); i++)
            {
                var temp = myappSet[$"Slave{i}"].Split(' ');
                PortsAndHosts.Add(new KeyValuePair <int, string>(int.Parse(temp[1]), temp[0]));
            }
            var slaveServices = new List <SlaveUserService>();
            int counter       = 0;

            foreach (var slaveSettings in PortsAndHosts)
            {
                var slave = new SlaveUserService(slaveSettings.Value, slaveSettings.Key);
                slaveServices.Add(slave.CreateSlaveServiceInNewDomain($"Slave{counter}"));
                counter++;
            }
            Func <User, bool> searchEngine1 = SearchByPredicate;
            var service = new MasterUserService(PortsAndHosts, ConfigurationManager.AppSettings["pathToXML"]);
            var master  = service.CreateMasterServiceInNewDomain("Master");

            master.Unload();

            Func <User, bool> searchEngine = SearchByPredicate;
            var foundValues  = master.SearchByPredicate(searchEngine);
            var foundValues2 = slaveServices[0].SearchByPredicate(searchEngine);

            Console.ReadKey();
        }
示例#3
0
        static void Main(string[] args)
        {
            XmlWriterSettings settings = new XmlWriterSettings
            {
                Encoding = Encoding.UTF8,
                Indent   = true
            };

            MasterUserService master = new MasterUserService(new XmlStorage("users.xml", settings), new DefaultIdGenerator());

            master.OnStart();

            /*User a = new User("artem", "one", DateTime.Today);
             * a.VisaRecords.Add(new Visa() { Country = "Belarus", End = DateTime.Now, Start = DateTime.Now });
             * a.VisaRecords.Add(new Visa() { Country = "Usa", End = DateTime.Now, Start = DateTime.Now });
             * storage.Add(a, new CustomValidation());
             * storage.Add(new User("dmitry", "four", DateTime.Today), new CustomValidation());*/

            while (true)
            {
                Console.WriteLine("Write command:");
                string command = Console.ReadLine();
                switch (command)
                {
                case "savestate":
                    master.SaveState();
                    break;

                case "stop":
                    master.OnStop();
                    break;

                case "add":
                    master.Add(new User("abrakadabra", "four", DateTime.Today), new CustomValidation());
                    break;

                case "all":
                    foreach (var user in master.GetAll())
                    {
                        Console.WriteLine(user);
                    }
                    break;

                case "delete1":
                    master.Delete(1);
                    break;

                case "delete":
                    master.Delete(new User("dmitry", "four", DateTime.Today));
                    break;

                default:
                    Console.WriteLine("Wrong command");
                    break;
                }
            }
        }
 public AccountManager(
     ILogger logger, MasterUserService masterUserService, ProductService productService,
     MT4Manager mt4Manager)
 {
     m_ptrLogger        = new ServerLogger(logger, nameof(AccountManager));
     _masterUserService = masterUserService;
     _productService    = productService;
     _mt4Manager        = mt4Manager;
 }
示例#5
0
        public void Add_NullLastnameUser_ExceptionThrown()
        {
            MasterUserService service = new MasterUserService();
            var user = new User()
            {
                FirstName = "Ivan", DateOfBirth = DateTime.Now
            };

            service.Add(user);
        }
 public FollowingManager(
     ILogger logger,
     MasterUserSettingService masterSettingsService,
     FollowerService followerService,
     SignalService signalService, MT4Manager mt4Manager,
     MasterUserService masterUserService)
 {
     m_ptrLogger            = new ServerLogger(logger, nameof(FollowingManager));
     _masterSettingsService = masterSettingsService;
     _followerService       = followerService;
     _signalService         = signalService;
     _mt4Manager            = mt4Manager;
     _masterUserService     = masterUserService;
 }
示例#7
0
        private static void Main(string[] args)
        {
            DomainInitialization.Load();
            MasterUserService master = DomainInitialization.Master as MasterUserService;
            var slaves = DomainInitialization.Slaves.ToList().Select(a => a as SlaveUserService);

            RunMaster(master);
            RunSlaves(slaves);
            while (true)
            {
                var quit = Console.ReadKey();
                if (quit.Key == ConsoleKey.Escape)
                {
                    break;
                }
            }
        }
示例#8
0
        public void SearchByPredicate_UserNotFound_EmptyCollection()
        {
            MasterUserService service = new MasterUserService();
            var user = new User()
            {
                FirstName = "Ivan", LastName = "Metelsky", DateOfBirth = DateTime.Now
            };

            service.Add(user);
            var listUsers = service.SearchByPredicate((x) =>
            {
                if (x == new User())
                {
                    return(true);
                }
                return(false);
            });

            Assert.AreEqual(listUsers.Count(), 0);
        }
示例#9
0
        public void SearchByPredicate_UserExists_User()
        {
            MasterUserService service = new MasterUserService();
            var user = new User()
            {
                FirstName = "Ivan", LastName = "Metelsky", DateOfBirth = DateTime.Now
            };

            service.Add(user);
            var listUsers = service.SearchByPredicate((x) =>
            {
                if (x == user)
                {
                    return(true);
                }
                return(false);
            });

            Assert.AreEqual(listUsers.First(), user);
        }
示例#10
0
        public void Delete_NullUser_ExceptionThrown()
        {
            MasterUserService service = new MasterUserService();

            service.Delete(null);
        }
示例#11
0
        public void Add_NullUser_ExceptionThrown()
        {
            MasterUserService service = new MasterUserService();

            service.Add(null);
        }
示例#12
0
        private static void RunMaster(MasterUserService master)
        {
            if (object.ReferenceEquals(master, null))
            {
                return;
            }

            Random rand = new Random();

            ThreadStart masterSearch = () =>
            {
                while (true)
                {
                    var serachresult = master.SearchForUsers(new Func <BllUser, bool>[] { u => u.FirstName != null });
                    Console.Write("Master search results: ");
                    foreach (var result in serachresult)
                    {
                        Console.Write(result + " ");
                    }

                    Console.WriteLine();
                    Thread.Sleep(rand.Next(1000, 5000));
                }
            };

            ThreadStart masterAddDelete = () =>
            {
                var users = new List <BllUser>
                {
                    new BllUser {
                        FirstName = "User1", LastName = "User1"
                    },
                    new BllUser {
                        FirstName = "User2", LastName = "User2"
                    },
                    new BllUser {
                        FirstName = "User3", LastName = "User3"
                    }
                };
                BllUser userToDelete = null;

                while (true)
                {
                    foreach (var user in users)
                    {
                        int addChance = rand.Next(0, 5);
                        if (addChance == 0)
                        {
                            master.Add(user);
                        }

                        Thread.Sleep(rand.Next(1000, 5000));
                        if (userToDelete != null)
                        {
                            int deleteChance = rand.Next(0, 5);
                            if (deleteChance == 0)
                            {
                                master.Delete(userToDelete);
                            }
                        }

                        userToDelete = user;
                        Thread.Sleep(rand.Next(1000, 5000));
                        Console.WriteLine();
                    }
                }
            };

            Thread masterSearchThread = new Thread(masterSearch)
            {
                IsBackground = true
            };
            Thread masterAddThread = new Thread(masterAddDelete)
            {
                IsBackground = true
            };
            Thread masterSearchThread1 = new Thread(masterSearch)
            {
                IsBackground = true
            };
            Thread masterAddThread1 = new Thread(masterAddDelete)
            {
                IsBackground = true
            };

            masterAddThread.Start();
            masterSearchThread.Start();
            masterAddThread1.Start();
            masterSearchThread1.Start();
        }