fortunes.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using BeetleX;
  2. using BeetleX.Buffers;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Globalization;
  6. using System.Text;
  7. namespace PlatformBenchmarks
  8. {
  9. public partial class HttpHandler
  10. {
  11. private readonly static AsciiString _fortunesTableStart = "<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>";
  12. private readonly static AsciiString _fortunesRowStart = "<tr><td>";
  13. private readonly static AsciiString _fortunesColumn = "</td><td>";
  14. private readonly static AsciiString _fortunesRowEnd = "</td></tr>";
  15. private readonly static AsciiString _fortunesTableEnd = "</table></body></html>";
  16. public async void fortunes(PipeStream stream, HttpToken token, ISession session)
  17. {
  18. try
  19. {
  20. var data = await token.Db.LoadFortunesRows();
  21. stream.Write(_fortunesTableStart.Data, 0, _fortunesTableStart.Length);
  22. foreach (var item in data)
  23. {
  24. stream.Write(_fortunesRowStart.Data, 0, _fortunesRowStart.Length);
  25. stream.Write(item.Id.ToString(CultureInfo.InvariantCulture));
  26. stream.Write(_fortunesColumn.Data, 0, _fortunesColumn.Length);
  27. stream.Write(System.Web.HttpUtility.HtmlEncode(item.Message));
  28. stream.Write(_fortunesRowEnd.Data, 0, _fortunesRowEnd.Length);
  29. }
  30. stream.Write(_fortunesTableEnd.Data, 0, _fortunesTableEnd.Length);
  31. }
  32. catch (Exception e_)
  33. {
  34. stream.Write(e_.Message);
  35. }
  36. OnCompleted(stream, session, token);
  37. }
  38. }
  39. }