Beispiel #1
0
        public static void Load()
        {
            Slaves = Slaves ?? new List <ISlave>();

            var section = ConnectionSection.GetSection();


            var servers = GetSection();

            if (ReferenceEquals(servers, null))
            {
                throw new ArgumentNullException();
            }
            Slaves = new List <ISlave>();
            for (int i = 0; i < servers.Count; i++)
            {
                AppDomain domain  = AppDomain.CreateDomain(servers[i].ServiceType + i);
                var       type    = typeof(DomainLoader);
                var       loader  = (DomainLoader)domain.CreateInstanceAndUnwrap(Assembly.GetAssembly(type).FullName, type.FullName);
                var       element = new ElementHelper
                {
                    IpEndPoint = new IPEndPoint(IPAddress.Parse(servers[i].IpAddress), servers[i].Port),
                    ServerType = servers[i].ServiceType
                };
                var service = loader.LoadService(element);
                if (servers[i].ServiceType == "slave")
                {
                    Slaves.Add(service as ISlave);
                }
                else if (servers[i].ServiceType == "master")
                {
                    Master = service as MasterUserService;
                }
                else
                {
                    throw new ArgumentException("Incorrect server type");
                }
            }
            InitializeServices();
        }