From 925ab619ead90124abdab6202d91980d992b1e11 Mon Sep 17 00:00:00 2001
From: ulysseskao <ulysseskao@gmail.com>
Date: Tue, 03 May 2016 19:33:17 +0800
Subject: [PATCH] add thread setting

---
 CCSTrace/CCS/Object/AlarmData.cs |   98 +++++++++++++++++++++++++-----------------------
 1 files changed, 51 insertions(+), 47 deletions(-)

diff --git a/CCSTrace/CCS/Object/AlarmData.cs b/CCSTrace/CCS/Object/AlarmData.cs
index 6ea8f2c..e8cd1e9 100644
--- a/CCSTrace/CCS/Object/AlarmData.cs
+++ b/CCSTrace/CCS/Object/AlarmData.cs
@@ -1,9 +1,10 @@
 using System;
-
 using System.Collections;
+using System.Collections.Generic;
 using System.Data.OracleClient;
 using System.Net;
 using System.Net.Sockets;
+using CCSTrace.TPower.DMMS.Model.CCS;
 using NLog;
 
 namespace CCSTrace.CCS.Object
@@ -11,30 +12,34 @@
     public class AlarmData
     {
         private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
-        private Hashtable _mTotalData = new Hashtable();
-        private OracleConnection _connectionTpc;
-        private OracleTransaction _transaction;
 
-        public AlarmData(OracleConnection conn, OracleTransaction trx)
+        public static AlarmData Instance { get; } = new AlarmData();
+
+        private readonly Dictionary<int, ALARMIP> _totalAddrData = new Dictionary<int, ALARMIP>();
+
+        private AlarmData()
         {
-            _connectionTpc = conn;
-            _transaction = trx;
+        }
 
+        public void Initialize(OracleConnection conn)
+        {
             var sqlStmt = "SELECT DEPTID,IP1,IP2,IP_PATROL FROM CCS.ALARM_IP";
-            OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
+            OracleCommand command = new OracleCommand(sqlStmt, conn);
             OracleDataReader reader = command.ExecuteReader();
 
             try
             {
                 while (reader.Read())
                 {
-                    ArrayList tmp = new ArrayList();
-                    tmp.Add(Convert.ToInt32(reader["DEPTID"].ToString()));
-                    tmp.Add(reader["IP1"].ToString());
-                    tmp.Add(reader["IP2"].ToString());
-                    tmp.Add(reader["IP_Patrol"].ToString());
+                    ALARMIP tmp = new ALARMIP
+                    {
+                        DEPTID = Convert.ToInt32(reader["DEPTID"].ToString()),
+                        IP1 = reader["IP1"].ToString(),
+                        IP2 = reader["IP2"].ToString(),
+                        IPPATROL = reader["IP_Patrol"].ToString()
+                    };
 
-                    _mTotalData.Add(Convert.ToInt32(reader["DeptID"].ToString()), tmp);
+                    _totalAddrData.Add(tmp.DEPTID, tmp);
                 }
             }
             catch (Exception e)
@@ -84,27 +89,27 @@
             return ssccode;
         }
 
-        private ArrayList GetIpAddress(int deptCode)
+        private ALARMIP GetIpAddress(int deptCode)
         {
-            return (ArrayList)_mTotalData[Convert.ToInt32(deptCode)];
+            return _totalAddrData[deptCode];
         }
 
-        public bool Alarm(string acceptNum, int dept)
+        public bool Alarm(OracleConnection conn, OracleTransaction trx, string acceptNum, int dept)
         {
             Logger.Info("開始Alarm...");
-            Socket mClient;
-            ArrayList ipAddressSet = GetIpAddress(GetSscCode(dept, Convert.ToInt32(DateTime.Now.DayOfWeek)));
+            Socket clientSocket;
+            ALARMIP alarmip = GetIpAddress(GetSscCode(dept, Convert.ToInt32(DateTime.Now.DayOfWeek)));
             string ip1;
             string ip2;
             string ipPatrol;
             System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
 
-            if (ipAddressSet != null)
+            if (alarmip != null)
             {
                 Logger.Info("已取得該部門所需通知的IP Address.");
-                ip1 = ipAddressSet[1].ToString();
-                ip2 = ipAddressSet[2].ToString();
-                ipPatrol = ipAddressSet[3].ToString();
+                ip1 = alarmip.IP1;
+                ip2 = alarmip.IP2;
+                ipPatrol = alarmip.IPPATROL;
             }
             else
             {
@@ -115,18 +120,18 @@
             try
             {
                 IPAddress serverIp = IPAddress.Parse(ip1);
-                int serverPort = Convert.ToInt32(GlobalVariable.AlermPort);
+                var serverPort = Convert.ToInt32(GlobalVariable.AlermPort);
                 IPEndPoint iep = new IPEndPoint(serverIp, serverPort);
 
-                mClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-                mClient.Connect(iep);
+                clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+                clientSocket.Connect(iep);
 
                 byte[] byteMessage = encoding.GetBytes(acceptNum);
 
-                mClient.Send(byteMessage);
-                mClient.Shutdown(SocketShutdown.Both);
-                mClient.Close();
-                RecordAlarmIp(acceptNum, ip1);
+                clientSocket.Send(byteMessage);
+                clientSocket.Shutdown(SocketShutdown.Both);
+                clientSocket.Close();
+                RecordAlarmIp(conn, trx, acceptNum, ip1);
                 Logger.Info("已成功通知" + ip1 + " !");
                 return true;
             }
@@ -138,18 +143,18 @@
             try
             {
                 IPAddress serverIp = IPAddress.Parse(ip2);
-                int serverPort = Convert.ToInt32(GlobalVariable.AlermPort);
+                var serverPort = Convert.ToInt32(GlobalVariable.AlermPort);
                 IPEndPoint iep = new IPEndPoint(serverIp, serverPort);
 
-                mClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-                mClient.Connect(iep);
+                clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+                clientSocket.Connect(iep);
 
                 byte[] byteMessage = encoding.GetBytes(acceptNum);
 
-                mClient.Send(byteMessage);
-                mClient.Shutdown(SocketShutdown.Both);
-                mClient.Close();
-                RecordAlarmIp(acceptNum, ip2);
+                clientSocket.Send(byteMessage);
+                clientSocket.Shutdown(SocketShutdown.Both);
+                clientSocket.Close();
+                RecordAlarmIp(conn, trx, acceptNum, ip2);
                 Logger.Info("已成功通知" + ip2 + " !");
                 return true;
             }
@@ -164,15 +169,15 @@
                 int serverPort = Convert.ToInt32(GlobalVariable.AlermPort);
                 IPEndPoint iep = new IPEndPoint(serverIp, serverPort);
 
-                mClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-                mClient.Connect(iep);
+                clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+                clientSocket.Connect(iep);
 
                 byte[] byteMessage = encoding.GetBytes(acceptNum);
 
-                mClient.Send(byteMessage);
-                mClient.Shutdown(SocketShutdown.Both);
-                mClient.Close();
-                RecordAlarmIp(acceptNum, ipPatrol);
+                clientSocket.Send(byteMessage);
+                clientSocket.Shutdown(SocketShutdown.Both);
+                clientSocket.Close();
+                RecordAlarmIp(conn, trx, acceptNum, ipPatrol);
                 Logger.Info("已成功通知" + ipPatrol + " !");
                 return true;
             }
@@ -184,11 +189,11 @@
             }
         }
 
-        private void RecordAlarmIp(string accNum, string ip)
+        private void RecordAlarmIp(OracleConnection conn, OracleTransaction trx, string accNum, string ip)
         {
-            string sqlStmt = "insert into eos.case_dispatch (acceptnum,alarmip) values('" + accNum + "','" + ip + "')";
+            string sqlStmt = "INSERT INTO EOS.CASE_DISPATCH (ACCEPTNUM,ALARMIP) VALUES('" + accNum + "','" + ip + "')";
 
-            OracleCommand command = new OracleCommand(sqlStmt, _connectionTpc, _transaction);
+            OracleCommand command = new OracleCommand(sqlStmt, conn, trx);
 
             try
             {
@@ -198,7 +203,6 @@
             catch (Exception e)
             {
                 Logger.Error("recordAlarmIP Error." + e.Message);
-                return;
             }
             finally
             {

--
Gitblit v0.0.0-SNAPSHOT