Пример #1
0
        /// <summary>
        /// 消息处理
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static void process(StateObject request)
        {
            //哈希表存放包体内容
            Hashtable _hashtable_Package = new Hashtable();
            string    UserId             = ""; //用户ID
            string    UserPwd            = ""; //用户密码


            try
            {
                if (request != null)
                {
                    #region 包体解析
                    short cmd1 = 0;    //主命令字
                    short cmd2 = 0;    //子命令字
                    cmd1 = OMSCmd.RspUserLogin;
                    cmd2 = ErrCommon.Success;
                    byte[]    ByteResult = null;
                    DataTable dt         = new DataTable();
                    Commonality.CommClass.ReadXML(request.receiveFileTemporarily, ref dt);

                    if (dt.Rows.Count <= 0)
                    {
                        cmd2 = -101;    //解包失败
                        //哈希表存放包体内容
                        Hashtable _hashtable_Package_Temp = new Hashtable();
                        _hashtable_Package_Temp.Add("1", request);    //...連結位置
                        _hashtable_Package_Temp.Add("2", cmd1);
                        _hashtable_Package_Temp.Add("3", cmd2);
                        ByteResult = null;
                        _hashtable_Package_Temp.Add("4", ByteResult);
                        ThreadPool.QueueUserWorkItem(new WaitCallback(CommonFunction.SendDatas), _hashtable_Package_Temp);
                        Commonality.ConsoleManage.Write(Commonality.ErrorLevel.Serious,
                                                        "KOIPMonitor>>RspUserLogin>>process>>", "消息体内容有误");
                        return;
                    }

                    UserId  = dt.Rows[0]["USERID"].ToString();
                    UserPwd = dt.Rows[0]["USERPWD"].ToString();
                    //UserId = Guid.NewGuid().ToString();
                    int    Ret   = -1;
                    string Roles = "";
                    int    RetID = 0;;
                    RspUserLogin.LoginVerification(UserId, UserPwd, ref Ret, ref Roles, ref RetID);
                    switch (Ret)
                    {
                    case -1:
                        cmd2 = -8010;
                        break;

                    case -2:
                        cmd2 = -8011;
                        break;

                    case 0:
                        if (CommClass.GetUserIsLogin(UserId) == 0)
                        {
                            cmd2 = ErrCommon.Success;
                        }
                        else
                        {
                            cmd2 = -8032;
                        }
                        CommClass.AddClientConnList(UserId, request);
                        //List表内容
                        List <Commonality.CommClass.TTable> ListTtable = new List <Commonality.CommClass.TTable>();
                        //Table属性内容
                        Commonality.CommClass.TTable Ttable = new Commonality.CommClass.TTable();
                        Ttable.FieldName  = "ROLES";
                        Ttable.FieldValue = Roles;
                        ListTtable.Add(Ttable);
                        Ttable.FieldName  = "ID";
                        Ttable.FieldValue = RetID.ToString();
                        ListTtable.Add(Ttable);
                        Commonality.CommClass.TableToByteArry(ListTtable, ref ByteResult);
                        break;
                    }


                    #endregion

                    Hashtable _hashtable_PackageArry = new Hashtable();
                    _hashtable_PackageArry.Add("1", request);    //...連結位置
                    _hashtable_PackageArry.Add("2", cmd1);
                    _hashtable_PackageArry.Add("3", cmd2);
                    _hashtable_PackageArry.Add("4", ByteResult);
                    ThreadPool.QueueUserWorkItem(new WaitCallback(CommonFunction.SendDatas), _hashtable_PackageArry);
                }
                else
                {
                    Commonality.ConsoleManage.Write(Commonality.ErrorLevel.Serious, "KOIPMonitor>>RspUserLogin>>process>>", "StateObject request==null");
                }
            }
            catch (Exception ex)
            {
                Commonality.ConsoleManage.Write(Commonality.ErrorLevel.Serious, "KOIPMonitor>>RspUserLogin>>process>>", ex.Message);
            }
            finally
            {
                //删除文件
                //if (!string.IsNullOrEmpty(request.receiveFileTemporarily))
                //    ThreadPool.QueueUserWorkItem(new WaitCallback(DiskIO.Del), request.receiveFileTemporarily);

                //GC.Collect();
            }
        }
        public static void ReceiveEvent(StateObject OmsState)
        {
            try
            {
                if (OmsState == null)
                {
                    return;
                }

                switch (OmsState.cmd1)
                {
                case  OMSCmd.RspServOpt:
                    RspServOpt.process(OmsState);
                    break;

                case  OMSCmd.UpDevState:
                    UpDevState.process(OmsState);
                    break;

                case OMSCmd.ReqGetServList:    //启动服务请求
                    if (CommClass.ISCONUP == "0")
                    {
                        RspGetServList.process(OmsState);    //启动服务回应
                    }
                    break;

                case OMSCmd.ReqServOpt:           //启动服务请求
                    ReqServOpt.process(OmsState); //启动服务回应
                    break;

                case OMSCmd.ReqGetServState:           //获取服务器状态请求
                    RspGetServState.process(OmsState); //获取服务器状态回应
                    break;

                case OMSCmd.ReqUserLogin:    //获取服务器状态请求
                    if (CommClass.ISCONUP == "0")
                    {
                        RspUserLogin.process(OmsState);    //获取服务器状态回应
                    }
                    break;

                case CommCmd.Handshake:    //握手
                    //byte[] ResultByte=null;
                    //CommonFunction.HandshakeByte(ref ResultByte);
                    //OmsState.Send(ResultByte);
                    CommonFunction.SendHandshake(OmsState);
                    break;

                case OMSCmd.DevTypeAdd:    //设备类型添加
                    if (CommClass.ISCONUP == "0")
                    {
                        DevTypeAdd.process(OmsState);
                    }
                    break;

                case OMSCmd.DevTypeDelete:    //设备类型删除
                    if (CommClass.ISCONUP == "0")
                    {
                        DevTypeDelete.process(OmsState);
                    }
                    break;

                case OMSCmd.DevTypeModify:    //设备类型修改
                    if (CommClass.ISCONUP == "0")
                    {
                        DevTypeModify.process(OmsState);
                    }
                    break;

                case OMSCmd.DevTypeQuery:    //设备类型查询
                    if (CommClass.ISCONUP == "0")
                    {
                        DevTypeQuery.process(OmsState);
                    }
                    break;

                case OMSCmd.DevInfoAdd:    //设备信息添加
                    if (CommClass.ISCONUP == "0")
                    {
                        DevInfoAdd.process(OmsState);
                    }
                    break;

                case OMSCmd.DevInfoDelete:    //设备信息删除
                    if (CommClass.ISCONUP == "0")
                    {
                        DevInfoDelete.process(OmsState);
                    }
                    break;

                case OMSCmd.DevInfoModify:    //设备信息修改
                    if (CommClass.ISCONUP == "0")
                    {
                        DevInfoModify.process(OmsState);
                    }
                    break;

                case OMSCmd.DevInfoQuery:    //设备信息查询
                    if (CommClass.ISCONUP == "0")
                    {
                        DevInfoQuery.process(OmsState);
                    }
                    break;

                case OMSCmd.UserInfoAdd:    //用户添加
                    if (CommClass.ISCONUP == "0")
                    {
                        UserInfoAdd.process(OmsState);
                    }
                    break;

                case OMSCmd.UserInfoDelete:    //用户删除
                    if (CommClass.ISCONUP == "0")
                    {
                        UserInfoDelete.process(OmsState);
                    }
                    break;

                case OMSCmd.UserInfoModify:    //用户修改
                    if (CommClass.ISCONUP == "0")
                    {
                        UserInfoModify.process(OmsState);
                    }
                    break;

                case OMSCmd.UserInfoQuery:    //用户查询
                    if (CommClass.ISCONUP == "0")
                    {
                        UserInfoQuery.process(OmsState);
                    }
                    break;

                case OMSCmd.ChangePwd:    //用户密码修改
                    if (CommClass.ISCONUP == "0")
                    {
                        ChangePwd.process(OmsState);
                    }
                    break;

                case OMSCmd.AlarmLogQuery:    //故障日志查询
                    if (CommClass.ISCONUP == "0")
                    {
                        AlarmLogQuery.process(OmsState);
                    }
                    break;

                case OMSCmd.AlarmLogClear:    //故障日志清除
                    if (CommClass.ISCONUP == "0")
                    {
                        AlarmLogClear.process(OmsState);
                    }
                    break;

                case OMSCmd.KOIPOnline:    //KOIP挂线查询
                    if (CommClass.ISCONUP == "0")
                    {
                        KOIPOnline.process(OmsState);
                    }
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                Commonality.ConsoleManage.Write(Commonality.ErrorLevel.Serious, "KOIPMonitor>>tcpServer_ReceiveEvent>>KOIPMonitor  TCP 連接接收處理>>", ex.Message);
            }
            finally
            {
                if (!string.IsNullOrEmpty(OmsState.receiveFileTemporarily))
                {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(DiskIO.Del), OmsState.receiveFileTemporarily);
                    //KdsState.workSocket.Close();
                    //KdsState.workSocket.Shutdown(System.Net.Sockets.SocketShutdown.Both);
                }
            }
        }