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); }
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); }
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); }
public async Task BuilderBuild() { log.Add($@"[{Host}] BuilderBuild"); var rq = new XferItem { Category = Category.REQ, CallIndex = 0, Name = "ChabuBuilder.build", }; await XferAndCheckError(rq); }
public async Task EnsureClosed() { log.Add($@"[{Host}] EnsureClosed"); var rq = new XferItem { Category = Category.REQ, CallIndex = 0, Name = "EnsureClosed", }; await XferAndCheckError(rq); }
public async Task ChabuClose() { log.Add($@"[{Host}] Chabu.close"); var rq = new XferItem { Category = Category.REQ, CallIndex = 0, Name = "Chabu.close", }; await XferAndCheckError(rq); }
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); }
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); }
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); }
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")); }
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); }
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); }