HtmlBuffer.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace PlatformBenchmarks
  7. {
  8. public class HtmlBufferWriter
  9. {
  10. public HtmlBufferWriter(int size)
  11. {
  12. mData = new byte[size];
  13. }
  14. public void Write(byte data)
  15. {
  16. mData[mPostion] = data;
  17. mPostion++;
  18. }
  19. public void Write(string value)
  20. {
  21. var len = Encoding.UTF8.GetBytes(value, 0, value.Length, mData, mPostion);
  22. mPostion += len;
  23. }
  24. public void Write(byte[] data)
  25. {
  26. Write(data, 0, data.Length);
  27. }
  28. public void Write(byte[] data, int offset, int count)
  29. {
  30. if (count <= 8)
  31. {
  32. for (int i = 0; i < count; i++)
  33. {
  34. mData[i + mPostion] = data[offset + i];
  35. }
  36. }
  37. else
  38. {
  39. System.Buffer.BlockCopy(data, offset, mData, mPostion, count);
  40. }
  41. mPostion += count;
  42. }
  43. private byte[] mData;
  44. private int mPostion = 0;
  45. public byte[] Data => mData;
  46. public int Length => mPostion;
  47. public void Reset()
  48. {
  49. mPostion = 0;
  50. }
  51. }
  52. }