using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using Aitex.Core.RT.Log;
using System.Windows;
using Aitex.Core.Util;

namespace Aitex.Core.WCF
{
    public class WcfServiceManager : Singleton<WcfServiceManager>
    {
        List<ServiceHost> _serviceHost = new List<ServiceHost>();

        public void Initialize(Type[] serviceType)
        {
            foreach (Type t in serviceType)
            {

                try
                {
                    ServiceHost host = new ServiceHost(t);
                    host.Open();
                    _serviceHost.Add(host);
                }
                catch (Exception ex)
                {
                    LOG.Write(0,MECF.Framework.Common.Equipment.ModuleName.System, t.Name, ex.Message);
                    throw new ApplicationException(string.Format("初始化{0}服务失败,", t.ToString(), ex.Message));
                }
            }
        }

        public void Terminate()
        {
            foreach (var serviceHost in _serviceHost)
            {
                try
                {
                    serviceHost.Abort();
                    serviceHost.Close();
                }
                catch (Exception ex)
                {
                    //LOG.Error(string.Format("关闭'{0}'服务失败", serviceHost.Description.Name), ex);
                }
            }
        }


    }
}