| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Aitex.Core.RT.DataCenter;using Aitex.Core.RT.Log;using Aitex.Core.RT.OperationCenter;using Aitex.Core.Util;namespace MECF.Framework.Common.Communications{    /// <summary>    /// 管理所有连接,通常在PLC之前    /// </summary>    public class ConnectionManager : Singleton<ConnectionManager>    {        public List<NotifiableConnectionItem> ConnectionList        {            get            {                foreach (var conn in _connections)                {                    conn.IsConnected = _dicConnections[conn.Name].IsConnected;                }                return _connections;            }        }        private Dictionary<string, IConnection> _dicConnections = new Dictionary<string, IConnection>();        private List<NotifiableConnectionItem> _connections = new List<NotifiableConnectionItem>();        public void Initialize()        {            OP.Subscribe("Connection.Connect", (string cmd, object[] args) =>            {                Connect((string) args[0]);                return true;            });            OP.Subscribe("Connection.Disconnect", (string cmd, object[] args) =>            {                Disconnect((string)args[0]);                return true;            });            DATA.Subscribe("Connection.List", () => ConnectionList, SubscriptionAttribute.FLAG.IgnoreSaveDB);        }         public void Terminate()        {        }        public void Subscribe(string name, IConnection conn)        {            if (string.IsNullOrEmpty(name))            {                return;            }            if (conn == null)            {                return;            }            _connections.Add(new NotifiableConnectionItem(){Address = conn.Address, Name = name});            _dicConnections[name] = conn;        }        public void Connect(string name)        {            if (_dicConnections.ContainsKey(name) && _dicConnections[name] != null)            {                _dicConnections[name].Connect();            }        }        public void Disconnect(string name)        {            if (_dicConnections.ContainsKey(name) && _dicConnections[name] != null)            {                _dicConnections[name].Disconnect();            }        }    }}
 |