Exemplo n.º 1
0
        public static T GetArgsPropValue <T>(this IClientMethod clientMethod, string argsPropKey, T defaultValue = default(T))
        {
            var containsArgs = clientMethod.Bags.ContainsKey("args");

            if (!containsArgs)
            {
                return(defaultValue);
            }

            var theArgs = clientMethod.Bags["args"];

            if (theArgs is JObject theJObject)
            {
                //有可能来自网络序列化
                var jToken = theJObject.GetValue(argsPropKey, StringComparison.OrdinalIgnoreCase);
                return(jToken == null ? defaultValue : jToken.ToObject <T>());
            }

            var argsJson = JsonConvert.SerializeObject(theArgs);
            var argsDic  = JsonConvert.DeserializeObject <IDictionary <string, object> >(argsJson);

            foreach (var argsDicKey in argsDic.Keys)
            {
                if (argsDicKey.Equals(argsPropKey, StringComparison.OrdinalIgnoreCase))
                {
                    var propValue     = argsDic[argsPropKey];
                    var propValueJson = JsonConvert.SerializeObject(propValue);
                    return(JsonConvert.DeserializeObject <T>(propValueJson));
                }
            }
            return(defaultValue);
        }
Exemplo n.º 2
0
        protected override void checkForMessage()
        {
            Message         message  = new Message();
            ReadWriteResult result   = m_fromClientQueue.Receive(message);
            IClientMethod   clMethod = null;

            if (result == ReadWriteResult.OK)
            {
                string data = Encoding.UTF8.GetString(message.MessageBytes, 0, message.MessageBytes.GetLength(0));

                Logger.Write("receive data from client: " + data);

                clMethod = (IClientMethod)m_methodSelector.selectMethod(data);

                clMethod.setQueueForAnswer(m_toClientQueue);
            }

            processMessage(clMethod);
        }
Exemplo n.º 3
0
        public static void SetArgsPropValue <T>(this IClientMethod clientMethod, string argsPropKey, T argsPropValue)
        {
            var containsArgs = clientMethod.Bags.ContainsKey("args");

            if (!containsArgs)
            {
                clientMethod.Bags["args"] = new ConcurrentDictionary <string, object>(StringComparer.OrdinalIgnoreCase);
            }

            var theArgs = clientMethod.Bags["args"];

            if (theArgs is JObject theJObject)
            {
                //有可能来自网络序列化
                theJObject.SetPropertyContent(argsPropKey, argsPropValue);
                return;
            }

            var argsJson = JsonConvert.SerializeObject(theArgs);
            var argsDic  = JsonConvert.DeserializeObject <IDictionary <string, object> >(argsJson);

            argsDic[argsPropKey]      = argsPropValue;
            clientMethod.Bags["args"] = argsDic;
        }
Exemplo n.º 4
0
 public static void SetArgs <TArgs>(this IClientMethod clientMethod, TArgs args)
 {
     clientMethod.SetBagItem(args);
 }
Exemplo n.º 5
0
 public static TArgs GetArgs <TArgs>(this IClientMethod clientMethod, TArgs defaultArgs = default(TArgs))
 {
     return(clientMethod.GetBagItem <TArgs>("args", defaultArgs));
 }