private async Task EndRequest(DataBatch endBatch) { var fe = endBatch.ForwardingEndpoint; if (fe != null) { DebugOutput.Log("Forwarding to {0}", fe); using (var client = new VectorTransferClient(_serverId, fe.Port, fe.Host)) { client.CompressUsing(_compression); var tx = await client.BeginTransfer(fe.PathAndQuery); await tx.Send(endBatch); await tx.End(endBatch.Properties); } } }
private async Task Run() { using (var server = new VectorTransferServer()) { server.AddHandler(server.BaseEndpoint.CreateRoute("x"), (d, r) => { foreach (var vect in d.Vectors) { Console.WriteLine(vect); } if (!d.KeepAlive) { var response = Encoding.ASCII.GetBytes("hi"); r.Content.Write(response, 0, response.Length); } return true; }); server.Start(); using (var client = new VectorTransferClient()) { using (var handle = await client.BeginTransfer("x")) { var data = new[] { ColumnVector1D.Create(1, 2, 3), ColumnVector1D.Create(4, 5, 6) }; await handle.Send(data); var res = await handle.End(); using (var ms = new MemoryStream()) { await res.CopyToAsync(ms); var text = Encoding.ASCII.GetString(ms.ToArray()); Assert.That(text, Is.EqualTo("hi")); } } } } }