_ostream.lua 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. -- Warning: do not edit this file.
  2. -- 警告: 不要编辑此文件
  3. local _M = {}
  4. _M.__index = _M
  5. local NULL_MESSAGE_CODE = -1
  6. function _M:PutU8 (v)
  7. self.stream:PutU8(v)
  8. end
  9. function _M:PutS8(v)
  10. self.stream:PutS8(v)
  11. end
  12. function _M:PutS16(v)
  13. self.stream:PutS16(v)
  14. end
  15. function _M:PutU16(v)
  16. self.stream:PutU16(v)
  17. end
  18. function _M:PutS32(v)
  19. self.stream:PutS32(v)
  20. end
  21. function _M:PutU32(v)
  22. self.stream:PutU32(v)
  23. end
  24. function _M:PutS64(v)
  25. self.stream:PutS64(v)
  26. end
  27. function _M:PutU64(v)
  28. self.stream:PutU64(v)
  29. end
  30. function _M:PutF32(v)
  31. self.stream:PutF32(v)
  32. end
  33. function _M:PutF64(v)
  34. self.stream:PutF64(v)
  35. end
  36. function _M:PutBool(v)
  37. self.stream:PutBool(v)
  38. end
  39. function _M:PutUnicode(v)
  40. self.stream:PutBool(v)
  41. end
  42. function _M:PutUTF(v)
  43. self.stream:PutUTF(v)
  44. end
  45. function _M:PutEnum8(v)
  46. self.stream:PutEnum8(v)
  47. end
  48. function _M:PutEnum32(v)
  49. self.stream:PutEnum32(v)
  50. end
  51. function _M:PutDateTime(v)
  52. self.stream:PutDateTime(v)
  53. end
  54. function _M:PutTimeSpan(v)
  55. self.stream:PutTimeSpan(v)
  56. end
  57. function _M:PutBytes(v)
  58. self.stream:PutBytes(v)
  59. end
  60. function _M:PutArray(array, elefn, objTempalte)
  61. if not array then
  62. self.stream:PutVS32(NULL_MESSAGE_CODE)
  63. return
  64. end
  65. self.stream:PutVS32(#array)
  66. for _,v in ipairs(array) do
  67. elefn(self,v,Protocol.Serializer.StringDefined[objTempalte])
  68. end
  69. end
  70. function _M:PutList(list, elefn,objTempalte)
  71. if not list then
  72. self.stream:PutVS32(NULL_MESSAGE_CODE)
  73. return
  74. end
  75. self.stream:PutVS32(#list)
  76. for _,v in ipairs(list) do
  77. elefn(self,v,Protocol.Serializer.StringDefined[objTempalte])
  78. end
  79. end
  80. function _M:PutMap(map,keyfn,valfn,keyTypeStr,valTypeStr)
  81. if not map or not next(map) then
  82. self.stream:PutVS32(NULL_MESSAGE_CODE)
  83. return
  84. end
  85. local count = 0
  86. for _,__ in pairs(map) do
  87. count = count + 1
  88. end
  89. self.stream:PutVS32(count)
  90. for k,v in pairs(map) do
  91. keyfn(self,k,Protocol.Serializer.StringDefined[keyTypeStr])
  92. valfn(self,v,Protocol.Serializer.StringDefined[valTypeStr])
  93. end
  94. end
  95. function _M:PutRouteOBJ(obj,objTemplate)
  96. local typeStr = type(objTemplate)
  97. if typeStr == 'number' then
  98. objTemplate = Protocol.Serializer[objTemplate]
  99. elseif typeStr == 'string' then
  100. objTemplate = Protocol.Serializer.StringDefined[objTemplate]
  101. end
  102. -- print(obj, objTempalte)
  103. objTemplate.Write(self,obj)
  104. end
  105. function _M:PutOBJ(obj,objTemplate)
  106. if not obj then
  107. self:PutS32(NULL_MESSAGE_CODE)
  108. return
  109. end
  110. local typeStr = type(objTemplate)
  111. if typeStr == 'number' then
  112. objTemplate = Protocol.Serializer[objTemplate]
  113. elseif typeStr == 'string' then
  114. objTemplate = Protocol.Serializer.StringDefined[objTemplate]
  115. end
  116. self:PutS32(objTemplate.MessageID)
  117. objTemplate.Write(self,obj)
  118. end
  119. function _M:ToArray()
  120. return self.stream:ToArray()
  121. end
  122. function _M:Dispose()
  123. self.stream:Dispose()
  124. end
  125. function _M:GetBuffer()
  126. return self.stream.Buffer
  127. end
  128. function _M.Create()
  129. local ret = setmetatable({}, _M)
  130. ret.stream = LuaOutputStream()
  131. return ret
  132. end
  133. return _M