Beispiel #1
0
 private void HandleMessageThread()
 {
     while (true)
     {
         ReceivedMessage receivedMessage = new ReceivedMessage();
         while (_receivedQueue.TryDequeue(out receivedMessage))
         {
             var handler = _handlerList.Find(q => q.MessageType.Name == Utility.GetMessageType(receivedMessage.message));
             if (handler != null & handler.Handlers.Count > 0)
             {
                 object message = JsonExtension.FromJSON(handler.MessageType, receivedMessage.message);
                 foreach (Action <int, object> handle in handler.Handlers)
                 {
                     //Task.Run(() => handle(arg1, message));
                     if (handle != null)
                     {
                         handle(receivedMessage.connectID, message);
                     }
                 }
                 OnReceivedObject?.Invoke(GetClientIpById(receivedMessage.connectID), GetClientPortIpById(receivedMessage.connectID), receivedMessage.connectID, message);
             }
             else
             {
                 // if no handler, directly convert to object, but what this object will be??
                 object message = JsonExtension.FromJSON(receivedMessage.message);
                 OnReceivedObject?.Invoke(GetClientIpById(receivedMessage.connectID), GetClientPortIpById(receivedMessage.connectID), receivedMessage.connectID, message);
             }
         }
         Thread.Sleep(1000);
     }
 }
Beispiel #2
0
 private void HandleMessageThread()
 {
     while (true)
     {
         string strMessage = string.Empty;
         while (_receivedQueue.TryDequeue(out strMessage))
         {
             var handler = _handlerList.Find(q => q.MessageType.Name == Utility.GetMessageType(strMessage));
             if (handler != null && handler.Handlers.Count > 0)
             {
                 object message = JsonExtension.FromJSON(handler.MessageType, strMessage);
                 //try waitting queue
                 CheckWattingQueue(message);
                 foreach (Action <object> action in handler.Handlers)
                 {
                     if (action != null)
                     {
                         action(message);
                     }
                 }
                 OnReceivedObject?.Invoke(message);
             }
             else
             {
                 // if no handler, directly convert to object, but what this object will be??
                 object message = JsonExtension.FromJSON(strMessage);
                 OnReceivedObject?.Invoke(message);
             }
         }
         Thread.Sleep(1000);
     }
 }
Beispiel #3
0
        //其实我不想加注释的, 这段写的实在是估计以后我自己也看不懂,所以还是加上吧
        //通过传入的参数 function 反射获取类 K3CloudApiClient的方法,然后直接调用
        //其中new string[] { JsonExtension.ToJSON(t) } 是调用方法的参数 参见 方法 public object Invoke(object obj, object[] parameters);
        // JsonExtension.ToJSON(t) 是把传入的对象转化为Json字符串
        //然后 调用后 进行强制类型转化为string
        //最后调用Json字符串转对象来实现调用
        public static InvokeResult InvokeFunction(string inputObjectString, K3CloudApiClient client, string formID, string function, string functionName)
        {
            InvokeResult invokeResult = new InvokeResult();

            try {
                Assembly   asmb       = Assembly.LoadFrom("C:\\Program Files (x86)\\Kingdee\\K3Cloud\\WebSite\\Bin\\Kingdee.BOS.WebApi.Client.dll");
                Type       type       = asmb.GetType("Kingdee.BOS.WebApi.Client.K3CloudApiClient");
                MethodInfo method     = type.GetMethod(function, new Type[] { typeof(string), typeof(string) });
                object[]   parameters = new object[] { formID, inputObjectString };
                return(JsonExtension.FromJSON <InvokeResult>((string)method.Invoke(client, parameters)));
            }
            catch (Exception e) {
                SystemLog.WriteSystemLog("☆☆☆☆☆☆☆☆☆ -- 系统级别错误! --☆☆☆☆☆☆☆☆☆");
                SystemLog.WriteSystemLog("☆☆☆☆☆☆☆☆☆ -- 调用API核心出错! -- ☆☆☆☆☆☆☆☆☆");
                SystemLog.WriteSystemLog("错误模块=" + functionName + "错误操作=" + function + "错误原因=" + e);
                SystemLog.WriteSystemLog("☆☆☆☆☆☆☆☆☆ --打印核心错误结束 -- ☆☆☆☆☆☆☆☆☆");
                client.Logout();
                return(null);
            }
        }
Beispiel #4
0
        public static LoginResult Login(string functionName)
        {
            K3CloudApiClient client = new K3CloudApiClient(InvokeLoginInfo.URL);
            string           ret    = client.ValidateLogin(InvokeLoginInfo.DBID, InvokeLoginInfo.USERNAME, InvokeLoginInfo.PASSWORD, InvokeLoginInfo.LANGUAGE);
            var         result      = JObject.Parse(ret)["LoginResultType"].Value <int>();
            LoginResult loginResult = null;

            if (result != 1)
            {
                loginResult = JsonExtension.FromJSON <LoginResult>(ret);
                BussnessLog.WriteBussnessLog(loginResult, functionName, "登录远程Cloud系统API失败!");
            }
            else
            {
                BussnessLog.WriteBussnessLog("", functionName, "登录远程Cloud系统API成功!");
                loginResult                 = new LoginResult();
                loginResult.client          = client;
                loginResult.LoginResultType = 1;
            }
            return(loginResult);
        }