Esempio n. 1
0
        public async Task <SetupResult> Setup(string directorVersion)
        {
            log.Add($@"[{Host}] Setup {directorVersion}");

            var rq = new XferItem
            {
                Category   = Category.REQ,
                CallIndex  = 0,
                Name       = "Setup",
                Parameters = new Parameter[]
                {
                    new ParameterValue("ChabuTestDirectorVersion", Constants.DirectorVersion),
                    new ParameterValue("NodeLabel", Host.ToString()),
                }
            };

            var rs = await XferAndCheckError(rq);


            SetupResult res;

            res.ChabuProtocolVersion = rs.GetString("ChabuProtocolVersion");
            res.Implemenation        = (Implemenation)Enum.Parse(typeof(Implemenation), rs.GetString("Implementation"));
            return(res);
        }
Esempio n. 2
0
        public async Task <GetStateResult> GetState()
        {
            var rq = new XferItem
            {
                Category   = Category.REQ,
                CallIndex  = 0,
                Name       = "GetState",
                Parameters = new Parameter[0]
            };

            var rs = await XferAndCheckError(rq);

            var result       = new GetStateResult();
            var channelCount = rs.GetInt("channelCount");

            result.Channels = new List <GetStateResultChannel>(channelCount);
            for (var i = 0; i < channelCount; i++)
            {
                result.Channels.Add(new GetStateResultChannel
                {
                    RecvLimit    = rs.GetLong($@"channel/{i}/recvLimit"),
                    RecvPostion  = rs.GetLong($@"channel/{i}/recvPosition"),
                    XmitLimit    = rs.GetLong($@"channel/{i}/xmitLimit"),
                    XmitPosition = rs.GetLong($@"channel/{i}/xmitPosition")
                });
            }
            return(result);
        }
Esempio n. 3
0
        private async Task <XferItem> XferAndCheckError(XferItem rq)
        {
            var result = await Network.SendRequestRetrieveResponse(rq);

            if (result.IsError())
            {
                Console.WriteLine($@"Xfer error: {rq.Name} -> {result.GetErrorMessage()}");
            }
            return(result);
        }
Esempio n. 4
0
        public async Task BuilderBuild()
        {
            log.Add($@"[{Host}] BuilderBuild");
            var rq = new XferItem
            {
                Category  = Category.REQ,
                CallIndex = 0,
                Name      = "ChabuBuilder.build",
            };

            await XferAndCheckError(rq);
        }
Esempio n. 5
0
        public async Task EnsureClosed()
        {
            log.Add($@"[{Host}] EnsureClosed");
            var rq = new XferItem
            {
                Category  = Category.REQ,
                CallIndex = 0,
                Name      = "EnsureClosed",
            };

            await XferAndCheckError(rq);
        }
Esempio n. 6
0
        public async Task ChabuClose()
        {
            log.Add($@"[{Host}] Chabu.close");
            var rq = new XferItem
            {
                Category  = Category.REQ,
                CallIndex = 0,
                Name      = "Chabu.close",
            };

            await XferAndCheckError(rq);
        }
Esempio n. 7
0
        public async Task <XferItem> SendRequestRetrieveResponse(XferItem req)
        {
            var ser = new XmlSerializer(typeof(XferItem));
            var ms  = new MemoryStream(10000);

            ser.Serialize(ms, req);
            var reqStr = Encoding.UTF8.GetString(ms.ToArray());
            //Console.WriteLine(@"sending: {0}", reqStr);
            var respStr = await SendRequestRetrieveResponse(reqStr);

            //Console.WriteLine(@"received: {0}", respStr);
            var resp = (XferItem)ser.Deserialize(GenerateStreamFromString(respStr));

            return(resp);
        }
Esempio n. 8
0
        public async Task BuilderAddChannel(int channelId, int priority)
        {
            log.Add($@"[{Host}] BuilderAddChannel {channelId} {priority}");
            var rq = new XferItem
            {
                Category   = Category.REQ,
                CallIndex  = 0,
                Name       = "ChabuBuilder.addChannel",
                Parameters = new Parameter[]
                {
                    new ParameterValue("Channel", channelId),
                    new ParameterValue("Priority", priority)
                }
            };

            await XferAndCheckError(rq);
        }
Esempio n. 9
0
        public async Task ChannelRecv(int channel, int amount)
        {
            log.Add($@"[{Host}] ChannelRecv {channel} {amount}");
            var rq = new XferItem
            {
                Category   = Category.REQ,
                CallIndex  = 0,
                Name       = "Channel.recv",
                Parameters = new Parameter[]
                {
                    new ParameterValue("Channel", channel),
                    new ParameterValue("Amount", amount)
                }
            };

            await XferAndCheckError(rq);
        }
Esempio n. 10
0
        public void EncodeDecode()
        {
            var cr = new XferItem
            {
                Name       = "Frank",
                Category   = Category.REQ,
                CallIndex  = 3,
                Parameters = new Parameter[]
                {
                    new ParameterValue("MyCommand1", "text"),
                    new ParameterValue("MyCommand",
                                       "A Text\r\nwith line break and <> <![CDATA[Inhalt]]> xml elements\" "),
                    new ParameterValue("Par1", 42),
                    new ParameterValue("Version", 0x1000000000),
                    new ParameterValue("Ratio", 1.34),
                    new ParameterWithChilds("channel-0", new Parameter[]
                    {
                        new ParameterValue("xmitIdx", 1234),
                        new ParameterValue("recvIdx", 1234),
                    }),
                    new ParameterWithChilds("channel-1", new Parameter[]
                    {
                        new ParameterValue("xmitIdx", 1234),
                        new ParameterValue("recvIdx", 1234),
                    }),
                }
            };
            var ser = new XmlSerializer(typeof(XferItem));
            var ms  = new MemoryStream(10000);

            ser.Serialize(ms, cr);
            XferItem res;

            using (var textWriter = new StringWriter())
            {
                ser.Serialize(textWriter, cr);
                Console.WriteLine(textWriter.ToString());
                res = (XferItem)ser.Deserialize(GenerateStreamFromString(textWriter.ToString()));
            }

            Assert.AreEqual(Category.REQ, res.Category);
            Assert.AreEqual("Frank", res.Name);
            Assert.AreEqual(3, res.CallIndex);
            Assert.AreEqual("text", res.GetString("MyCommand1"));
            Assert.AreEqual(1234, res.GetInt("channel-0/xmitIdx"));
        }
Esempio n. 11
0
        public async Task BuilderStart(uint applicationVersion, string applicationProtocolName, int recvPacketSize, int priorityCount)
        {
            log.Add($@"[{Host}] BuilderStart {applicationVersion} {applicationProtocolName} {priorityCount}");
            var rq = new XferItem
            {
                Category   = Category.REQ,
                CallIndex  = 0,
                Name       = "ChabuBuilder.start",
                Parameters = new Parameter[]
                {
                    new ParameterValue("ApplicationVersion", applicationVersion),
                    new ParameterValue("ApplicationProtocolName", applicationProtocolName),
                    new ParameterValue("RecvPacketSize", recvPacketSize),
                    new ParameterValue("PriorityCount", priorityCount),
                }
            };

            await XferAndCheckError(rq);
        }
Esempio n. 12
0
        public async Task Connect(string hostName)
        {
            var idx = hostName.LastIndexOf(':');

            var hostAddr = hostName.Substring(0, idx);

            var portForCtrl  = Convert.ToInt32(hostName.Substring(idx + 1));
            var portForChabu = portForCtrl + 1;

            log.Add($@"[{Host}] Connect");
            var rq = new XferItem
            {
                Category   = Category.REQ,
                CallIndex  = 0,
                Name       = "Connect",
                Parameters = new Parameter[]
                {
                    new ParameterValue("HostName", hostAddr),
                    new ParameterValue("Port", portForChabu)
                }
            };

            await XferAndCheckError(rq);
        }