using BeetleX.FastHttpApi; using Microsoft.Extensions.Hosting; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using System; using System.Threading; using System.Text; namespace Benchmarks { [BeetleX.FastHttpApi.Controller] class Program { private static readonly byte[] _helloWorldPayload = Encoding.UTF8.GetBytes("Hello, World!"); private static StringBytes plaintextResult; public static void Main(string[] args) { plaintextResult = new StringBytes(_helloWorldPayload); var builder = new HostBuilder() .ConfigureServices((hostContext, services) => { services.AddHostedService(); }); builder.Build().Run(); } public object plaintext(HttpResponse response) { response.Header[HeaderTypeFactory.DATE] = DateTime.Now.ToString("r"); return plaintextResult; } public object json(HttpResponse response) { response.Header[HeaderTypeFactory.DATE] = DateTime.Now.ToString("r"); return new JsonResult(new JsonMessage { message = "Hello, World!" }); } public class JsonMessage { public string message { get; set; } } } public class BeetleXHttpServer : IHostedService { private HttpApiServer mApiServer; public virtual Task StartAsync(CancellationToken cancellationToken) { mApiServer = new HttpApiServer(); mApiServer.Register(typeof(Program).Assembly); mApiServer.Options.Port = 8080; mApiServer.Options.BufferPoolMaxMemory = 500; mApiServer.Options.MaxConnections = 100000; mApiServer.Options.UrlIgnoreCase = false; mApiServer.Options.LogLevel = BeetleX.EventArgs.LogType.Warring; mApiServer.Options.LogToConsole = true; mApiServer.Options.Statistical = false; mApiServer.Open(); Console.WriteLine("BeetleX FastHttpApi server"); Console.WriteLine($"ServerGC:{System.Runtime.GCSettings.IsServerGC}"); Console.Write(mApiServer.BaseServer); return Task.CompletedTask; } public virtual Task StopAsync(CancellationToken cancellationToken) { mApiServer.BaseServer.Dispose(); return Task.CompletedTask; } } }