#region License Information /* HeuristicLab * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using HeuristicLab.Hive.Contracts; using HeuristicLab.Hive.Contracts.Interfaces; using HeuristicLab.Hive.Slave.Communication.Properties; namespace HeuristicLab.Hive.Slave.Communication { internal class ServiceLocator { private static ServiceLocator instance = null; private WcfServicePool slaveFacadePool = null; private WcfServicePool streamedSlaveFacadePool = null; internal static ServiceLocator Instance { get { if (instance == null) { instance = new ServiceLocator(); } return instance; } } private string hostAddress; internal string HostAddress { get { return hostAddress; } set { if (hostAddress != value) { hostAddress = value; if (slaveFacadePool != null) slaveFacadePool.HostAddress = value; if (streamedSlaveFacadePool != null) streamedSlaveFacadePool.HostAddress = value; } } } public ServiceLocator() { Settings.Default.SettingChanging += new System.Configuration.SettingChangingEventHandler(Default_SettingChanging); } void Default_SettingChanging(object sender, System.Configuration.SettingChangingEventArgs e) { if (slaveFacadePool != null) { slaveFacadePool.Username = Settings.Default.HiveUsername; slaveFacadePool.Password = Settings.Default.HivePassword; } if (streamedSlaveFacadePool != null) { streamedSlaveFacadePool.Username = Settings.Default.HiveUsername; streamedSlaveFacadePool.Password = Settings.Default.HivePassword; } } internal WcfServicePool SlaveFacadePool { get { if (slaveFacadePool == null) { slaveFacadePool = new WcfServicePool(HostAddress, Settings.Default.HiveUsername, Settings.Default.HivePassword, "SlaveHttpEndpoint"); } return slaveFacadePool; } } internal WcfServicePool StreamedSlaveFacadePool { get { if (streamedSlaveFacadePool == null) { streamedSlaveFacadePool = new WcfServicePool(HostAddress, Settings.Default.HiveUsername, Settings.Default.HivePassword, "SlaveTcpStreamedEndpoint"); } return streamedSlaveFacadePool; } } } }