in http/get_simple/csharp/server/ArrowHttpServer.cs [77:117]
public static async Task Main(string[] args)
{
string serverUri = "http://*:8008/";
HttpListener listener = new HttpListener();
listener.Prefixes.Add(serverUri);
listener.Start();
Console.Write("Generating data... ");
var batches = GenerateBatches();
Console.WriteLine("done.");
while (true)
{
Console.Write("Waiting... ");
var context = await listener.GetContextAsync();
Console.WriteLine("client connected");
DateTime startTime = DateTime.UtcNow;
context.Response.SendChunked = true;
context.Response.StatusCode = (int)HttpStatusCode.OK;
context.Response.ContentType = "application/vnd.apache.arrow.stream";
int numRows = 0;
using (context.Response.OutputStream)
using (var writer = new ArrowStreamWriter(context.Response.OutputStream, schema))
{
foreach (RecordBatch batch in batches)
{
await writer.WriteRecordBatchAsync(batch);
numRows += batch.Length;
}
}
DateTime endTime = DateTime.UtcNow;
Console.WriteLine("Done");
Console.WriteLine($"{numRows} records sent");
Console.WriteLine($"{batches.Count} record batches sent");
Console.WriteLine($"{(endTime - startTime).TotalSeconds} seconds elapsed");
}
}