OrganizeServerBuilder.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using System.Collections.Generic;
  2. using Newtonsoft.Json.Linq;
  3. using Sers.Core.CL.MessageOrganize;
  4. using Sers.Core.CL.MessageOrganize.DefaultOrganize;
  5. using Vit.Extensions;
  6. namespace Sers.CL.Socket.Iocp
  7. {
  8. public class OrganizeServerBuilder : IOrganizeServerBuilder
  9. {
  10. public void Build(List<IOrganizeServer> organizeList, JObject config)
  11. {
  12. #region security
  13. Sers.Core.Util.StreamSecurity.SecurityManager securityManager = null;
  14. if (config["security"] is JArray securityConfigs)
  15. {
  16. securityManager = Sers.Core.Util.StreamSecurity.SecurityManager.BuildSecurityManager(securityConfigs);
  17. }
  18. #endregion
  19. string mode = config["mode"]?.ToString();
  20. switch (mode)
  21. {
  22. default:
  23. //case "Simple":
  24. {
  25. var delivery = new Mode.Simple.DeliveryServer();
  26. delivery.securityManager = securityManager;
  27. delivery.host = config["host"].ConvertToString() ?? delivery.host;
  28. delivery.port = config["port"]?.ConvertBySerialize<int?>() ?? delivery.port;
  29. #region 接收缓存区 配置
  30. // 接收缓存区大小(单位:byte,默认:8192)
  31. delivery.receiveBufferSize = config["receiveBufferSize"]?.ConvertBySerialize<int?>() ?? delivery.receiveBufferSize;
  32. #endregion
  33. organizeList.Add(new OrganizeServer(delivery, config));
  34. }
  35. break;
  36. case "Timer":
  37. {
  38. var delivery = new Mode.Timer.DeliveryServer();
  39. delivery.securityManager = securityManager;
  40. delivery.host = config["host"].ConvertToString() ?? delivery.host;
  41. delivery.port = config["port"]?.ConvertBySerialize<int?>() ?? delivery.port;
  42. #region 接收缓存区 配置
  43. // 接收缓存区大小(单位:byte,默认:8192)
  44. delivery.receiveBufferSize = config["receiveBufferSize"]?.ConvertBySerialize<int?>() ?? delivery.receiveBufferSize;
  45. #endregion
  46. #region 发送缓冲区 配置
  47. // 发送缓冲区刷新间隔(单位:毫秒,默认:1)
  48. delivery.sendFlushInterval = config["sendFlushInterval"].ConvertBySerialize<int?>() ?? delivery.sendFlushInterval;
  49. // 发送缓冲区数据块的最小大小(单位:byte,默认 1000000)
  50. delivery.sendBufferSize = config["sendBufferSize"].ConvertBySerialize<int?>() ?? delivery.sendBufferSize;
  51. // 发送缓冲区个数(默认1024)
  52. delivery.sendBufferCount = config["sendBufferCount"].ConvertBySerialize<int?>() ?? delivery.sendBufferSize;
  53. #endregion
  54. organizeList.Add(new OrganizeServer(delivery, config));
  55. }
  56. break;
  57. case "ThreadWait":
  58. {
  59. var delivery = new Mode.ThreadWait.DeliveryServer();
  60. delivery.securityManager = securityManager;
  61. delivery.host = config["host"].ConvertToString() ?? delivery.host;
  62. delivery.port = config["port"]?.ConvertBySerialize<int?>() ?? delivery.port;
  63. #region 接收缓存区 配置
  64. // 接收缓存区大小(单位:byte,默认:8192)
  65. delivery.receiveBufferSize = config["receiveBufferSize"]?.ConvertBySerialize<int?>() ?? delivery.receiveBufferSize;
  66. #endregion
  67. #region 发送缓冲区 配置
  68. // 发送缓冲区刷新间隔(单位:毫秒,默认:1)
  69. delivery.sendFlushInterval = config["sendFlushInterval"].ConvertBySerialize<int?>() ?? delivery.sendFlushInterval;
  70. // 发送缓冲区数据块的最小大小(单位:byte,默认 1000000)
  71. delivery.sendBufferSize = config["sendBufferSize"].ConvertBySerialize<int?>() ?? delivery.sendBufferSize;
  72. // 发送缓冲区个数(默认1024)
  73. delivery.sendBufferCount = config["sendBufferCount"].ConvertBySerialize<int?>() ?? delivery.sendBufferSize;
  74. #endregion
  75. organizeList.Add(new OrganizeServer(delivery, config));
  76. }
  77. break;
  78. }
  79. }
  80. }
  81. }