# HG changeset patch # User riono # Date 1641551929 -32400 # Node ID 41aae40a611c9c3278d271b1bc1d6bcbc6e56f6c # Parent 98ee1ee1efb702eda2b8bbf7570702198f20f24b bug fix diff -r 98ee1ee1efb7 -r 41aae40a611c Test/Example/FizzBuzz/Counter.cs --- a/Test/Example/FizzBuzz/Counter.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/Test/Example/FizzBuzz/Counter.cs Fri Jan 07 19:38:49 2022 +0900 @@ -1,17 +1,17 @@ using System; +using System.Threading; using Christie_net.annotation; using Christie_net.codegear; namespace Christie_net.Test.Example.FizzBuzz { public class Counter: CodeGear { - [Take] private int num; + [Take] private int cunt; public override void Run(CodeGearManager cgm) { - Console.WriteLine("call"); - if (num <= 100) { - GetDgm("FizzBuzz").Put("num", num); - cgm.GetLocalDGM().Put("num", num+1); - Console.WriteLine("num;" + num); + if (cunt <= 100) { + Console.WriteLine("cunt;" + cunt); + GetDgm("FizzBuzz").Put("num", cunt); + cgm.GetLocalDGM().Put("cunt", cunt+1); cgm.Setup(new Counter()); } else { GetDgm("FizzBuzz").Put("num", -1); diff -r 98ee1ee1efb7 -r 41aae40a611c Test/Example/FizzBuzz/FizzBuzz.cs --- a/Test/Example/FizzBuzz/FizzBuzz.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/Test/Example/FizzBuzz/FizzBuzz.cs Fri Jan 07 19:38:49 2022 +0900 @@ -13,6 +13,8 @@ Console.WriteLine(num + ":Fizz"); }else if (num % 5 == 0) { Console.WriteLine(num + ":Buzz"); + }else if(num < 0) { + cgm.GetLocalDGM().Finish(); } else { Console.WriteLine(num); } diff -r 98ee1ee1efb7 -r 41aae40a611c Test/Example/FizzBuzz/StartFizzBuzz.cs --- a/Test/Example/FizzBuzz/StartFizzBuzz.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/Test/Example/FizzBuzz/StartFizzBuzz.cs Fri Jan 07 19:38:49 2022 +0900 @@ -4,7 +4,7 @@ namespace Christie_net.Test.Example.FizzBuzz { public class StartFizzBuzz : StartCodeGear { - [Take] private int i = 1; + //[Take] private int i = 1; public StartFizzBuzz(CodeGearManager cgm) : base(cgm) { } @@ -14,7 +14,7 @@ counter.Setup(new Counter()); fizzbuzz.Setup(new FizzBuzz()); counter.CreateRemoteDGM("FizzBuzz", "localhost", 10002); - counter.GetLocalDGM().Put("num", 1); + counter.GetLocalDGM().Put("cunt", 3); } } } \ No newline at end of file diff -r 98ee1ee1efb7 -r 41aae40a611c Test/Example/RemoteTake/CreateRemoteTakeTest.cs --- a/Test/Example/RemoteTake/CreateRemoteTakeTest.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/Test/Example/RemoteTake/CreateRemoteTakeTest.cs Fri Jan 07 19:38:49 2022 +0900 @@ -4,9 +4,9 @@ namespace Christie_net.Test.Example.RemoteTake { public class CreateRemoteTakeTest : CodeGear { + //[Take] public RTCommand command; [Take] public RTCommand command; - public override void Run(CodeGearManager cgm) { Console.WriteLine(command); cgm.GetLocalDGM().Put("finish" , "end"); diff -r 98ee1ee1efb7 -r 41aae40a611c Test/Example/RemoteTake/StartRemoteTake.cs --- a/Test/Example/RemoteTake/StartRemoteTake.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/Test/Example/RemoteTake/StartRemoteTake.cs Fri Jan 07 19:38:49 2022 +0900 @@ -1,3 +1,4 @@ +using System; using System.Threading; using Christie_net.codegear; @@ -11,10 +12,10 @@ cgm.Setup(new CreateRemoteTakeTest()); cgm.Setup(new FinishRemoteTake()); RTCommand cmd = new RTCommand("insert", "line", 0); - + cgm.GetDGM("remote").Put("command", cmd); - Thread.Sleep(9999); + //Thread.Sleep(9999); } } diff -r 98ee1ee1efb7 -r 41aae40a611c datagear/DataGears.cs --- a/datagear/DataGears.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/datagear/DataGears.cs Fri Jan 07 19:38:49 2022 +0900 @@ -25,6 +25,8 @@ var queue = new BlockingCollection>(); queue.TryAdd(dg); dataGears.Add(key, queue); + + //Console.WriteLine("dict:" + dataGears.Count + " queue:" + dataGears[key].Count); } } } @@ -39,15 +41,24 @@ object data = null; // Queueからの取得は参照渡し DataGear dataGear; + //Console.WriteLine("queue num:" + dataGears.Count); if (dataGears[key].TryTake(out dataGear)) { data = dataGear.GetData(); } + + //Console.WriteLine("count:" + dataGears[key].Count); // DataGeraを削除取り出ししたのでkeyも削除 if (dataGears[key].Count == 0) { dataGears[key].Dispose(); dataGears.Remove(key); } + + + // if (dataGears[key].Count == 0) { + // dataGears[key].Dispose(); + // } + //Console.WriteLine("queue num after:" + dataGears.Count); return data; } } diff -r 98ee1ee1efb7 -r 41aae40a611c datagear/LocalDataGearManager.cs --- a/datagear/LocalDataGearManager.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/datagear/LocalDataGearManager.cs Fri Jan 07 19:38:49 2022 +0900 @@ -26,7 +26,7 @@ public override void RunCommand(Command cm) { switch (cm.type) { case CommandType.PUT: - //Console.WriteLine("data:" + cm.key + " dg:" + cm.dg.GetData().ToString()); + Console.WriteLine("data:" + cm.key + " dg:" + cm.dg.GetData().ToString()); dataGears.SetData(cm); if (waitList.ContainsKey(cm.key)) { RunCommand(waitList.GetAndRemoveCommand(cm.key)); diff -r 98ee1ee1efb7 -r 41aae40a611c datagear/WaitList.cs --- a/datagear/WaitList.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/datagear/WaitList.cs Fri Jan 07 19:38:49 2022 +0900 @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; @@ -30,6 +31,7 @@ waitlist.Remove(key); } } + Console.WriteLine("cm:" + cm); return cm; } } diff -r 98ee1ee1efb7 -r 41aae40a611c datagear/dg/MessagePackDataGear.cs --- a/datagear/dg/MessagePackDataGear.cs Tue Nov 30 19:34:24 2021 +0900 +++ b/datagear/dg/MessagePackDataGear.cs Fri Jan 07 19:38:49 2022 +0900 @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using Christie_net.Test.Example.RemoteTake; using MessagePack; @@ -27,9 +28,9 @@ // Debug // Console.WriteLine("data:" + data); // Console.WriteLine(); - + messagePack = MessagePackSerializer.Serialize(data); - + SetDataSize(messagePack.Length); } catch (Exception e) { Console.WriteLine("\n" + e.ToString()); @@ -45,15 +46,15 @@ var dataObj = MessagePackSerializer.Deserialize(messagePack); // Debug - //Console.WriteLine("MSP data: " + clazz); + //Console.WriteLine("MSP data: " + dataObj.GetType()); var convertData = MessagePackDataFormed(dataObj); - - + + SetData(convertData); } catch (Exception e) { Console.WriteLine(e.StackTrace); - } + } return base.GetData(); } @@ -63,15 +64,27 @@ this.dataSize = dataSize; } + // If deserialize data is not primitive type, it is dictionary public T MessagePackDataFormed(dynamic deserializedData) { - Dictionary dataDictionary = (Dictionary) deserializedData; - List valueArray = new List(); - foreach (var VARIABLE in dataDictionary) { - valueArray.Add(VARIABLE.Value); + var type = deserializedData.GetType(); + //Console.WriteLine(type); + T instance; + if (type.IsPrimitive || type == typeof(string) || type == typeof(decimal)) { + //instance = Activator.CreateInstance(clazz, deserializedData); + // var typeInference = deserializedData; + instance = Convert.ChangeType(deserializedData, clazz); + } else { + //Dictionary dataDictionary = (Dictionary) deserializedData; + List valueArray = new List(); + foreach (var VARIABLE in (dynamic) deserializedData) { + Console.WriteLine("val:" + VARIABLE); + valueArray.Add(VARIABLE.Value); + } + + object[] convertArray = valueArray.ToArray(); + + instance = (T) Activator.CreateInstance(clazz, convertArray); } - object[] convertArray = valueArray.ToArray(); - - T instance = (T) Activator.CreateInstance(clazz, convertArray); return instance; } }