Пример #1
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);
     }
 }
Пример #2
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);
     }
 }
Пример #3
0
 public BaseWebReader GetObjectAsync(OnReceivedObject executeOnReceivedObject, string webAddress = null,
                                     string request           = null, object obj = null, string toUser = null, int secWaitAnswer = 0,
                                     Action executeIfNoAnswer = null, bool cancelAllMyRequest = false, bool removeObjectsToMe = false,
                                     bool removeMyObjects     = false)
 {
     return(ExecuteServerRequest(true, webAddress, request, obj, null, executeOnReceivedObject, secWaitAnswer,
                                 executeIfNoAnswer, 0, toUser, cancelAllMyRequest, removeObjectsToMe, removeMyObjects));
 }
Пример #4
0
        private BaseWebReader ExecuteServerRequest(bool async, string webAddress = null, string request          = null, object obj     = null, NameValueCollection form = null, OnReceivedObject executeOnReceivedObject = null,
                                                   int secWaitAnswer             = 0, Action executeIfNoAnswer   = null, int secTimeOut = 0, string toUser = null,
                                                   bool cancelAllMyRequest       = false, bool removeObjectsToMe = false, bool removeMyObjects = false)
        {
            if (webAddress == null)
            {
                webAddress = UrlServer();
            }
            webAddress  = webAddress.TrimEnd('/');
            webAddress += "/?network=" + Uri.EscapeDataString(_networkConnection.NetworkName) + "&app=" + Uri.EscapeDataString(_appName) + "&fromUser="******"&secWaitAnswer=" + secWaitAnswer;
            if (cancelAllMyRequest)
            {
                webAddress += "&cancelRequest=true";
            }
            if (removeObjectsToMe)
            {
                webAddress += "&removeObjects=true";
            }
            if (removeMyObjects)
            {
                webAddress += "&removeMyObjects=true";
            }
            if (string.IsNullOrEmpty(toUser))
            {
                toUser = _masterServerMachineName + ".";
            }
            if (!string.IsNullOrEmpty(toUser))
            {
                webAddress += "&toUser="******"&request=" + request;
            }

            Action <string> parser = null;

            if (executeOnReceivedObject != null)
            {
                parser = html =>
                {
                    Converter.XmlToObject(html, typeof(ObjectVector), out var returnObj);
                    var objectVector = (ObjectVector)returnObj;
                    if (objectVector != null)
                    {
                        executeOnReceivedObject.Invoke(objectVector.FromUser, objectVector.ObjectName, objectVector.XmlObject);
                    }
                }
            }
            ;
            else
            {
                webAddress += "&noGetObject=true";
            }

            if (obj != null)
            {
                webAddress += "&post=" + obj.GetType().Name + "&secTimeout=" + secTimeOut;
                var str   = new StringWriter();
                var xml   = new XmlSerializer(obj.GetType());
                var xmlns = new XmlSerializerNamespaces();
                xmlns.Add(string.Empty, string.Empty);
                xml.Serialize(str, obj, xmlns);
                var postData = str.ToString();
                if (form == null)
                {
                    form = new NameValueCollection();
                }
                var strCod = HttpUtility.UrlEncode((Utility.MinifyXml(postData)));
                form.Add("object", strCod);
            }
            if (webAddress.StartsWith("vd://"))
            {
                return(VirtualReadWeb(async, _networkConnection.VirtualDevice, webAddress, parser, null, form, secWaitAnswer, executeIfNoAnswer));
            }
            return(ReadWeb(async, webAddress, parser, null, form, secWaitAnswer, executeIfNoAnswer));
            //var virtualDevice = Device.FindDeviceByAddress(webAddress);
            //return virtualDevice != null
            //  ? VirtualReadWeb(async, Converter.UintToIp(_networkConnection.VirtualDevice.Ip), webAddress, parser, null, form, secWaitAnswer, executeIfNoAnswer, virtualDevice) : (BaseWebReader)ReadWeb(async, webAddress, parser, null, form, secWaitAnswer, executeIfNoAnswer);
        }
Пример #5
0
 public BaseWebReader SendObjectAsync(ref object obj, string webAddress = null, NameValueCollection form = null,
                                      string toUser            = null, int secTimeOut = 0, int secWaitAnswer = 0, OnReceivedObject executeOnReceivedObject = null,
                                      Action executeIfNoAnswer = null, bool cancelAllMyRequest = false, bool removeObjectsToMe = false,
                                      bool removeMyObjects     = false)
 {
     return(ExecuteServerRequest(true, webAddress, null, obj, form, executeOnReceivedObject, secWaitAnswer,
                                 executeIfNoAnswer, secTimeOut, toUser, cancelAllMyRequest, removeObjectsToMe, removeMyObjects));
 }
Пример #6
0
        public static string SendObjectSync(object Obj, string WebAddress = null, System.Collections.Specialized.NameValueCollection Dictionary = null, string ToUser = null, int SecTimeOut = 0, int SecWaitAnswer = 0, OnReceivedObject ExecuteOnReceivedObject = null, Action ExecuteIfNoAnswer = null, bool CancellAllMyRequest = false, bool RemoveObjectsToMe = false, bool RemoveMyObjects = false)
        {
            var Reader = ExecuteServerRequest(false, WebAddress, ExecuteOnReceivedObject, SecWaitAnswer, ExecuteIfNoAnswer, Obj, Dictionary, SecTimeOut, ToUser, CancellAllMyRequest, RemoveObjectsToMe, RemoveMyObjects);

            return(Reader.HTML);
        }
Пример #7
0
        private static WebReader ExecuteServerRequest(bool Async, string WebAddress = null, OnReceivedObject ExecuteOnReceivedObject = null, int SecWaitAnswer = 0, Action ExecuteIfNoAnswer = null, object Obj = null, System.Collections.Specialized.NameValueCollection Dictionary = null, int SecTimeOut = 0, string ToUser = null, bool CancellAllMyRequest = false, bool RemoveObjectsToMe = false, bool RemoveMyObjects = false)
        {
            if (WebAddress == null)
            {
                WebAddress = UrlServer();
            }
            WebAddress  = WebAddress.TrimEnd('/');
            WebAddress += "/appserver.aspx?app=" + System.Uri.EscapeDataString(AppName) + "&fromuser="******"&secwaitanswer=" + SecWaitAnswer.ToString();
            if (CancellAllMyRequest)
            {
                WebAddress += "&cancellrequest=true";
            }
            if (RemoveObjectsToMe)
            {
                WebAddress += "&removeobjects=true";
            }
            if (RemoveMyObjects)
            {
                WebAddress += "&removemyobjects=true";
            }

            // NUOVA VERSIONE AGGIUNGERE QUESTA LINEA
            if (ToUser == "")
            {
                ToUser = Setup.Network.MasterServerMachineName + ".";
            }
            if (ToUser != "")
            {
                WebAddress += "&touser="******"&nogetobject=true";
            }

            if (Obj != null)
            {
                WebAddress += "&post=" + Obj.GetType().Name + "&sectimeout=" + SecTimeOut.ToString();
                System.IO.StringWriter Str = new System.IO.StringWriter();
                System.Xml.Serialization.XmlSerializer           xml   = new System.Xml.Serialization.XmlSerializer(Obj.GetType());
                System.Xml.Serialization.XmlSerializerNamespaces xmlns = new System.Xml.Serialization.XmlSerializerNamespaces();
                xmlns.Add(string.Empty, string.Empty);
                xml.Serialize(Str, Obj, xmlns);
                string postData = Str.ToString();
                if (Dictionary == null)
                {
                    Dictionary = new System.Collections.Specialized.NameValueCollection();
                }

                string StrCod = Converter.StringToBase64(postData);
                Dictionary.Add("object", StrCod);
            }

            return(ReadWeb(Async, WebAddress, Parser, null, Dictionary, SecWaitAnswer, ExecuteIfNoAnswer));
        }