erlang自定义二进制协议
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2050 lines
57 KiB

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using MiscUtil.Conversion;
  7. using MiscUtil.IO;
  8. namespace GenProto
  9. {
  10. public static class ProtocolCore
  11. {
  12. public interface ISerialize
  13. {
  14. void Serialize(EndianBinaryWriter binaryWriter);
  15. byte[] Serialize();
  16. }
  17. public interface IDeserialize<T>
  18. {
  19. void Deserialize(EndianBinaryReader binaryReader);
  20. void Deserialize(byte[] data);
  21. }
  22. public enum BasicTypeEnum
  23. {
  24. Custom = 0x00,
  25. Boolean = 0x01,
  26. Int8 = 0x02,
  27. UInt8 = 0x03,
  28. UInt16 = 0x04,
  29. Int16 = 0x05,
  30. Int32 = 0x06,
  31. UInt32 = 0x07,
  32. Int64 = 0x08,
  33. UInt64 = 0x09,
  34. Float = 0x10,
  35. Double = 0x11,
  36. String = 0x12,
  37. }
  38. public static BasicTypeEnum JudgeType<T>(T value)
  39. {
  40. return value switch
  41. {
  42. bool => BasicTypeEnum.Boolean,
  43. byte => BasicTypeEnum.Int8,
  44. sbyte => BasicTypeEnum.UInt8,
  45. ushort => BasicTypeEnum.UInt16,
  46. short => BasicTypeEnum.Int16,
  47. int => BasicTypeEnum.Int32,
  48. uint => BasicTypeEnum.UInt32,
  49. long => BasicTypeEnum.Int64,
  50. ulong => BasicTypeEnum.UInt64,
  51. float => BasicTypeEnum.Float,
  52. double => BasicTypeEnum.Double,
  53. string => BasicTypeEnum.String,
  54. _ => BasicTypeEnum.Custom,
  55. };
  56. }
  57. public static void WriteValue<T>(this EndianBinaryWriter binaryWriter, T value)
  58. {
  59. switch (value)
  60. {
  61. case bool boolValue:
  62. binaryWriter.Write(boolValue);
  63. break;
  64. case byte byteValue:
  65. binaryWriter.Write(byteValue);
  66. break;
  67. case sbyte sbyteValue:
  68. binaryWriter.Write(sbyteValue);
  69. break;
  70. case ushort ushortValue:
  71. binaryWriter.Write(ushortValue);
  72. break;
  73. case short shortValue:
  74. binaryWriter.Write(shortValue);
  75. break;
  76. case int intValue:
  77. binaryWriter.Write(intValue);
  78. break;
  79. case uint uintValue:
  80. binaryWriter.Write(uintValue);
  81. break;
  82. case long longValue:
  83. binaryWriter.Write(longValue);
  84. break;
  85. case ulong ulongValue:
  86. binaryWriter.Write(ulongValue);
  87. break;
  88. case float floatValue:
  89. binaryWriter.Write(floatValue);
  90. break;
  91. case double doubleValue:
  92. binaryWriter.Write(doubleValue);
  93. break;
  94. case string stringValue:
  95. var bytesLength = (ushort)binaryWriter.Encoding.GetByteCount(stringValue);
  96. binaryWriter.Write(bytesLength);
  97. var bytes = binaryWriter.Encoding.GetBytes(stringValue);
  98. binaryWriter.Write(bytes);
  99. break;
  100. default:
  101. {
  102. switch (value)
  103. {
  104. case IList listValue:
  105. binaryWriter.WriteList(listValue);
  106. break;
  107. case ISerialize serialize:
  108. serialize.Serialize(binaryWriter);
  109. break;
  110. default:
  111. if (value != null)
  112. {
  113. throw new InvalidOperationException($"unexpect type: {value.GetType().FullName}");
  114. }
  115. break;
  116. }
  117. break;
  118. }
  119. }
  120. }
  121. public static void WriteList(this EndianBinaryWriter binaryWriter, IList list)
  122. {
  123. var length = (ushort)(list?.Count ?? 0);
  124. binaryWriter.Write(length);
  125. if (list == null) return;
  126. for (var idx = 0; idx < length; idx++)
  127. {
  128. var value = list[idx];
  129. binaryWriter.WriteValue(value);
  130. }
  131. }
  132. public static void ReadValue(this EndianBinaryReader binaryReader, out bool value)
  133. {
  134. value = binaryReader.ReadBoolean();
  135. }
  136. public static void ReadValue(this EndianBinaryReader binaryReader, out sbyte value)
  137. {
  138. value = binaryReader.ReadSByte();
  139. }
  140. public static void ReadValue(this EndianBinaryReader binaryReader, out byte value)
  141. {
  142. value = binaryReader.ReadByte();
  143. }
  144. public static void ReadValue(this EndianBinaryReader binaryReader, out ushort value)
  145. {
  146. value = binaryReader.ReadUInt16();
  147. }
  148. public static void ReadValue(this EndianBinaryReader binaryReader, out short value)
  149. {
  150. value = binaryReader.ReadInt16();
  151. }
  152. public static void ReadValue(this EndianBinaryReader binaryReader, out int value)
  153. {
  154. value = binaryReader.ReadInt32();
  155. }
  156. public static void ReadValue(this EndianBinaryReader binaryReader, out uint value)
  157. {
  158. value = binaryReader.ReadUInt32();
  159. }
  160. public static void ReadValue(this EndianBinaryReader binaryReader, out long value)
  161. {
  162. value = binaryReader.ReadInt64();
  163. }
  164. public static void ReadValue(this EndianBinaryReader binaryReader, out ulong value)
  165. {
  166. value = binaryReader.ReadUInt64();
  167. }
  168. public static void ReadValue(this EndianBinaryReader binaryReader, out float value)
  169. {
  170. value = binaryReader.ReadSingle();
  171. }
  172. public static void ReadValue(this EndianBinaryReader binaryReader, out double value)
  173. {
  174. value = binaryReader.ReadDouble();
  175. }
  176. public static void ReadValue(this EndianBinaryReader binaryReader, out string value)
  177. {
  178. var bytesLength = binaryReader.ReadUInt16();
  179. var bytes = binaryReader.ReadBytes(bytesLength);
  180. value = binaryReader.Encoding.GetString(bytes, 0, bytes.Length);
  181. }
  182. public static void ReadValue<T>(this EndianBinaryReader binaryReader, out T value) where T : new()
  183. {
  184. value = default;
  185. value = new T();
  186. if (value is not IDeserialize<T> deserialize)
  187. {
  188. throw new InvalidOperationException($"error type: {typeof(T).FullName}");
  189. }
  190. deserialize.Deserialize(binaryReader);
  191. }
  192. public static void ReadValue<T>(this EndianBinaryReader binaryReader, out List<T> outList, BasicTypeEnum basicTypeEnum) where T : new()
  193. {
  194. outList = default;
  195. IList list = default;
  196. var length = binaryReader.ReadUInt16();
  197. if (length <= 0)
  198. {
  199. return;
  200. }
  201. for (var idx = 0; idx < length; idx++)
  202. {
  203. switch (basicTypeEnum)
  204. {
  205. case BasicTypeEnum.Boolean:
  206. list ??= new List<bool>(length);
  207. var boolValue = binaryReader.ReadBoolean();
  208. list.Add(boolValue);
  209. break;
  210. case BasicTypeEnum.Int8:
  211. list ??= new List<sbyte>(length);
  212. var sbyteValue = binaryReader.ReadSByte();
  213. list.Add(sbyteValue);
  214. break;
  215. case BasicTypeEnum.UInt8:
  216. list ??= new List<byte>(length);
  217. var byteValue = binaryReader.ReadByte();
  218. list.Add(byteValue);
  219. break;
  220. case BasicTypeEnum.UInt16:
  221. list ??= new List<ushort>(length);
  222. var ushortValue = binaryReader.ReadUInt16();
  223. list.Add(ushortValue);
  224. break;
  225. case BasicTypeEnum.Int16:
  226. list ??= new List<short>(length);
  227. var shortValue = binaryReader.ReadInt16();
  228. list.Add(shortValue);
  229. break;
  230. case BasicTypeEnum.Int32:
  231. list ??= new List<int>(length);
  232. var intValue = binaryReader.ReadInt32();
  233. list.Add(intValue);
  234. break;
  235. case BasicTypeEnum.UInt32:
  236. list ??= new List<uint>(length);
  237. var uintValue = binaryReader.ReadUInt32();
  238. list.Add(uintValue);
  239. break;
  240. case BasicTypeEnum.Int64:
  241. list ??= new List<long>(length);
  242. var longValue = binaryReader.ReadInt64();
  243. list.Add(longValue);
  244. break;
  245. case BasicTypeEnum.UInt64:
  246. list ??= new List<ulong>(length);
  247. var ulongValue = binaryReader.ReadUInt64();
  248. list.Add(ulongValue);
  249. break;
  250. case BasicTypeEnum.Float:
  251. list ??= new List<float>(length);
  252. var singleValue = binaryReader.ReadSingle();
  253. list.Add(singleValue);
  254. break;
  255. case BasicTypeEnum.Double:
  256. list ??= new List<double>(length);
  257. var doubleValue = binaryReader.ReadDouble();
  258. list.Add(doubleValue);
  259. break;
  260. case BasicTypeEnum.String:
  261. list ??= new List<string>(length);
  262. var stringValue = binaryReader.ReadString();
  263. list.Add(stringValue);
  264. break;
  265. case BasicTypeEnum.Custom:
  266. list ??= new List<T>(length);
  267. if (new T() is IDeserialize<T> item)
  268. {
  269. item.Deserialize(binaryReader);
  270. list.Add(item);
  271. }
  272. break;
  273. default:
  274. throw new InvalidOperationException();
  275. }
  276. }
  277. outList = list as List<T>;
  278. }
  279. } public class test : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<test>
  280. {
  281. public const int ProtoId = 1;
  282. public string aa;
  283. public byte[] Serialize()
  284. {
  285. using var memoryStream = new MemoryStream();
  286. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  287. Serialize(binaryWriter);
  288. return memoryStream.ToArray();
  289. }
  290. public void Deserialize(byte[] data)
  291. {
  292. using var memoryStream = new MemoryStream(data);
  293. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  294. Deserialize(binaryReader);
  295. }
  296. public void Serialize(EndianBinaryWriter binaryWriter)
  297. {
  298. binaryWriter.WriteValue(aa);
  299. }
  300. public void Deserialize(EndianBinaryReader binaryReader)
  301. {
  302. binaryReader.ReadValue(out aa);
  303. }
  304. }
  305. public class phoneNumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<phoneNumber>
  306. {
  307. public const int ProtoId = 2;
  308. public test number;
  309. public int type;
  310. public byte[] Serialize()
  311. {
  312. using var memoryStream = new MemoryStream();
  313. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  314. Serialize(binaryWriter);
  315. return memoryStream.ToArray();
  316. }
  317. public void Deserialize(byte[] data)
  318. {
  319. using var memoryStream = new MemoryStream(data);
  320. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  321. Deserialize(binaryReader);
  322. }
  323. public void Serialize(EndianBinaryWriter binaryWriter)
  324. {
  325. if (number != null)
  326. {
  327. binaryWriter.WriteValue(1);
  328. binaryWriter.WriteValue(number);
  329. }
  330. else
  331. {
  332. binaryWriter.WriteValue(0);
  333. }
  334. binaryWriter.WriteValue(type);
  335. }
  336. public void Deserialize(EndianBinaryReader binaryReader)
  337. {
  338. if (binaryReader.ReadBoolean())
  339. {
  340. binaryReader.ReadValue(out number);
  341. }
  342. binaryReader.ReadValue(out type);
  343. }
  344. }
  345. public class person : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<person>
  346. {
  347. public const int ProtoId = 3;
  348. public string name;
  349. public int id;
  350. public string email;
  351. public List<phoneNumber> phone;
  352. public byte[] Serialize()
  353. {
  354. using var memoryStream = new MemoryStream();
  355. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  356. Serialize(binaryWriter);
  357. return memoryStream.ToArray();
  358. }
  359. public void Deserialize(byte[] data)
  360. {
  361. using var memoryStream = new MemoryStream(data);
  362. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  363. Deserialize(binaryReader);
  364. }
  365. public void Serialize(EndianBinaryWriter binaryWriter)
  366. {
  367. binaryWriter.WriteValue(name);
  368. binaryWriter.WriteValue(id);
  369. binaryWriter.WriteValue(email);
  370. binaryWriter.WriteValue(phone);
  371. }
  372. public void Deserialize(EndianBinaryReader binaryReader)
  373. {
  374. binaryReader.ReadValue(out name);
  375. binaryReader.ReadValue(out id);
  376. binaryReader.ReadValue(out email);
  377. binaryReader.ReadValue(out phone, ProtocolCore.BasicTypeEnum.Custom);
  378. }
  379. }
  380. public class addressBook : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<addressBook>
  381. {
  382. public const int ProtoId = 4;
  383. public List<person> person;
  384. public List<person> other;
  385. public byte[] Serialize()
  386. {
  387. using var memoryStream = new MemoryStream();
  388. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  389. Serialize(binaryWriter);
  390. return memoryStream.ToArray();
  391. }
  392. public void Deserialize(byte[] data)
  393. {
  394. using var memoryStream = new MemoryStream(data);
  395. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  396. Deserialize(binaryReader);
  397. }
  398. public void Serialize(EndianBinaryWriter binaryWriter)
  399. {
  400. binaryWriter.WriteValue(person);
  401. binaryWriter.WriteValue(other);
  402. }
  403. public void Deserialize(EndianBinaryReader binaryReader)
  404. {
  405. binaryReader.ReadValue(out person, ProtocolCore.BasicTypeEnum.Custom);
  406. binaryReader.ReadValue(out other, ProtocolCore.BasicTypeEnum.Custom);
  407. }
  408. }
  409. public class union : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<union>
  410. {
  411. public const int ProtoId = 5;
  412. public string test;
  413. public int type;
  414. public byte[] Serialize()
  415. {
  416. using var memoryStream = new MemoryStream();
  417. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  418. Serialize(binaryWriter);
  419. return memoryStream.ToArray();
  420. }
  421. public void Deserialize(byte[] data)
  422. {
  423. using var memoryStream = new MemoryStream(data);
  424. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  425. Deserialize(binaryReader);
  426. }
  427. public void Serialize(EndianBinaryWriter binaryWriter)
  428. {
  429. binaryWriter.WriteValue(test);
  430. binaryWriter.WriteValue(type);
  431. }
  432. public void Deserialize(EndianBinaryReader binaryReader)
  433. {
  434. binaryReader.ReadValue(out test);
  435. binaryReader.ReadValue(out type);
  436. }
  437. }
  438. public class tbool : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tbool>
  439. {
  440. public const int ProtoId = 6;
  441. public bool bool;
  442. public byte[] Serialize()
  443. {
  444. using var memoryStream = new MemoryStream();
  445. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  446. Serialize(binaryWriter);
  447. return memoryStream.ToArray();
  448. }
  449. public void Deserialize(byte[] data)
  450. {
  451. using var memoryStream = new MemoryStream(data);
  452. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  453. Deserialize(binaryReader);
  454. }
  455. public void Serialize(EndianBinaryWriter binaryWriter)
  456. {
  457. binaryWriter.WriteValue(bool);
  458. }
  459. public void Deserialize(EndianBinaryReader binaryReader)
  460. {
  461. binaryReader.ReadValue(out bool);
  462. }
  463. }
  464. public class tint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tint8>
  465. {
  466. public const int ProtoId = 7;
  467. public sbyte int1;
  468. public sbyte int2;
  469. public byte[] Serialize()
  470. {
  471. using var memoryStream = new MemoryStream();
  472. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  473. Serialize(binaryWriter);
  474. return memoryStream.ToArray();
  475. }
  476. public void Deserialize(byte[] data)
  477. {
  478. using var memoryStream = new MemoryStream(data);
  479. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  480. Deserialize(binaryReader);
  481. }
  482. public void Serialize(EndianBinaryWriter binaryWriter)
  483. {
  484. binaryWriter.WriteValue(int1);
  485. binaryWriter.WriteValue(int2);
  486. }
  487. public void Deserialize(EndianBinaryReader binaryReader)
  488. {
  489. binaryReader.ReadValue(out int1);
  490. binaryReader.ReadValue(out int2);
  491. }
  492. }
  493. public class tuint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tuint8>
  494. {
  495. public const int ProtoId = 8;
  496. public byte int1;
  497. public byte int2;
  498. public byte[] Serialize()
  499. {
  500. using var memoryStream = new MemoryStream();
  501. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  502. Serialize(binaryWriter);
  503. return memoryStream.ToArray();
  504. }
  505. public void Deserialize(byte[] data)
  506. {
  507. using var memoryStream = new MemoryStream(data);
  508. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  509. Deserialize(binaryReader);
  510. }
  511. public void Serialize(EndianBinaryWriter binaryWriter)
  512. {
  513. binaryWriter.WriteValue(int1);
  514. binaryWriter.WriteValue(int2);
  515. }
  516. public void Deserialize(EndianBinaryReader binaryReader)
  517. {
  518. binaryReader.ReadValue(out int1);
  519. binaryReader.ReadValue(out int2);
  520. }
  521. }
  522. public class tint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tint16>
  523. {
  524. public const int ProtoId = 9;
  525. public short int1;
  526. public short int2;
  527. public byte[] Serialize()
  528. {
  529. using var memoryStream = new MemoryStream();
  530. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  531. Serialize(binaryWriter);
  532. return memoryStream.ToArray();
  533. }
  534. public void Deserialize(byte[] data)
  535. {
  536. using var memoryStream = new MemoryStream(data);
  537. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  538. Deserialize(binaryReader);
  539. }
  540. public void Serialize(EndianBinaryWriter binaryWriter)
  541. {
  542. binaryWriter.WriteValue(int1);
  543. binaryWriter.WriteValue(int2);
  544. }
  545. public void Deserialize(EndianBinaryReader binaryReader)
  546. {
  547. binaryReader.ReadValue(out int1);
  548. binaryReader.ReadValue(out int2);
  549. }
  550. }
  551. public class tuint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tuint16>
  552. {
  553. public const int ProtoId = 10;
  554. public ushort int1;
  555. public ushort int2;
  556. public byte[] Serialize()
  557. {
  558. using var memoryStream = new MemoryStream();
  559. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  560. Serialize(binaryWriter);
  561. return memoryStream.ToArray();
  562. }
  563. public void Deserialize(byte[] data)
  564. {
  565. using var memoryStream = new MemoryStream(data);
  566. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  567. Deserialize(binaryReader);
  568. }
  569. public void Serialize(EndianBinaryWriter binaryWriter)
  570. {
  571. binaryWriter.WriteValue(int1);
  572. binaryWriter.WriteValue(int2);
  573. }
  574. public void Deserialize(EndianBinaryReader binaryReader)
  575. {
  576. binaryReader.ReadValue(out int1);
  577. binaryReader.ReadValue(out int2);
  578. }
  579. }
  580. public class tint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tint32>
  581. {
  582. public const int ProtoId = 11;
  583. public int int1;
  584. public int int2;
  585. public int int3;
  586. public int int4;
  587. public int int5;
  588. public int int6;
  589. public int int7;
  590. public int int8;
  591. public int int9;
  592. public int int10;
  593. public byte[] Serialize()
  594. {
  595. using var memoryStream = new MemoryStream();
  596. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  597. Serialize(binaryWriter);
  598. return memoryStream.ToArray();
  599. }
  600. public void Deserialize(byte[] data)
  601. {
  602. using var memoryStream = new MemoryStream(data);
  603. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  604. Deserialize(binaryReader);
  605. }
  606. public void Serialize(EndianBinaryWriter binaryWriter)
  607. {
  608. binaryWriter.WriteValue(int1);
  609. binaryWriter.WriteValue(int2);
  610. binaryWriter.WriteValue(int3);
  611. binaryWriter.WriteValue(int4);
  612. binaryWriter.WriteValue(int5);
  613. binaryWriter.WriteValue(int6);
  614. binaryWriter.WriteValue(int7);
  615. binaryWriter.WriteValue(int8);
  616. binaryWriter.WriteValue(int9);
  617. binaryWriter.WriteValue(int10);
  618. }
  619. public void Deserialize(EndianBinaryReader binaryReader)
  620. {
  621. binaryReader.ReadValue(out int1);
  622. binaryReader.ReadValue(out int2);
  623. binaryReader.ReadValue(out int3);
  624. binaryReader.ReadValue(out int4);
  625. binaryReader.ReadValue(out int5);
  626. binaryReader.ReadValue(out int6);
  627. binaryReader.ReadValue(out int7);
  628. binaryReader.ReadValue(out int8);
  629. binaryReader.ReadValue(out int9);
  630. binaryReader.ReadValue(out int10);
  631. }
  632. }
  633. public class tuint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tuint32>
  634. {
  635. public const int ProtoId = 12;
  636. public uint int1;
  637. public uint int2;
  638. public byte[] Serialize()
  639. {
  640. using var memoryStream = new MemoryStream();
  641. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  642. Serialize(binaryWriter);
  643. return memoryStream.ToArray();
  644. }
  645. public void Deserialize(byte[] data)
  646. {
  647. using var memoryStream = new MemoryStream(data);
  648. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  649. Deserialize(binaryReader);
  650. }
  651. public void Serialize(EndianBinaryWriter binaryWriter)
  652. {
  653. binaryWriter.WriteValue(int1);
  654. binaryWriter.WriteValue(int2);
  655. }
  656. public void Deserialize(EndianBinaryReader binaryReader)
  657. {
  658. binaryReader.ReadValue(out int1);
  659. binaryReader.ReadValue(out int2);
  660. }
  661. }
  662. public class tint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tint64>
  663. {
  664. public const int ProtoId = 13;
  665. public long int1;
  666. public long int2;
  667. public byte[] Serialize()
  668. {
  669. using var memoryStream = new MemoryStream();
  670. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  671. Serialize(binaryWriter);
  672. return memoryStream.ToArray();
  673. }
  674. public void Deserialize(byte[] data)
  675. {
  676. using var memoryStream = new MemoryStream(data);
  677. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  678. Deserialize(binaryReader);
  679. }
  680. public void Serialize(EndianBinaryWriter binaryWriter)
  681. {
  682. binaryWriter.WriteValue(int1);
  683. binaryWriter.WriteValue(int2);
  684. }
  685. public void Deserialize(EndianBinaryReader binaryReader)
  686. {
  687. binaryReader.ReadValue(out int1);
  688. binaryReader.ReadValue(out int2);
  689. }
  690. }
  691. public class tuint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tuint64>
  692. {
  693. public const int ProtoId = 14;
  694. public ulong int1;
  695. public ulong int2;
  696. public byte[] Serialize()
  697. {
  698. using var memoryStream = new MemoryStream();
  699. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  700. Serialize(binaryWriter);
  701. return memoryStream.ToArray();
  702. }
  703. public void Deserialize(byte[] data)
  704. {
  705. using var memoryStream = new MemoryStream(data);
  706. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  707. Deserialize(binaryReader);
  708. }
  709. public void Serialize(EndianBinaryWriter binaryWriter)
  710. {
  711. binaryWriter.WriteValue(int1);
  712. binaryWriter.WriteValue(int2);
  713. }
  714. public void Deserialize(EndianBinaryReader binaryReader)
  715. {
  716. binaryReader.ReadValue(out int1);
  717. binaryReader.ReadValue(out int2);
  718. }
  719. }
  720. public class tinteger : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tinteger>
  721. {
  722. public const int ProtoId = 15;
  723. public integer int1;
  724. public integer int2;
  725. public integer int3;
  726. public integer int4;
  727. public integer int5;
  728. public integer int6;
  729. public integer int7;
  730. public integer int8;
  731. public byte[] Serialize()
  732. {
  733. using var memoryStream = new MemoryStream();
  734. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  735. Serialize(binaryWriter);
  736. return memoryStream.ToArray();
  737. }
  738. public void Deserialize(byte[] data)
  739. {
  740. using var memoryStream = new MemoryStream(data);
  741. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  742. Deserialize(binaryReader);
  743. }
  744. public void Serialize(EndianBinaryWriter binaryWriter)
  745. {
  746. if (int1 != null)
  747. {
  748. binaryWriter.WriteValue(1);
  749. binaryWriter.WriteValue(int1);
  750. }
  751. else
  752. {
  753. binaryWriter.WriteValue(0);
  754. }
  755. if (int2 != null)
  756. {
  757. binaryWriter.WriteValue(1);
  758. binaryWriter.WriteValue(int2);
  759. }
  760. else
  761. {
  762. binaryWriter.WriteValue(0);
  763. }
  764. if (int3 != null)
  765. {
  766. binaryWriter.WriteValue(1);
  767. binaryWriter.WriteValue(int3);
  768. }
  769. else
  770. {
  771. binaryWriter.WriteValue(0);
  772. }
  773. if (int4 != null)
  774. {
  775. binaryWriter.WriteValue(1);
  776. binaryWriter.WriteValue(int4);
  777. }
  778. else
  779. {
  780. binaryWriter.WriteValue(0);
  781. }
  782. if (int5 != null)
  783. {
  784. binaryWriter.WriteValue(1);
  785. binaryWriter.WriteValue(int5);
  786. }
  787. else
  788. {
  789. binaryWriter.WriteValue(0);
  790. }
  791. if (int6 != null)
  792. {
  793. binaryWriter.WriteValue(1);
  794. binaryWriter.WriteValue(int6);
  795. }
  796. else
  797. {
  798. binaryWriter.WriteValue(0);
  799. }
  800. if (int7 != null)
  801. {
  802. binaryWriter.WriteValue(1);
  803. binaryWriter.WriteValue(int7);
  804. }
  805. else
  806. {
  807. binaryWriter.WriteValue(0);
  808. }
  809. if (int8 != null)
  810. {
  811. binaryWriter.WriteValue(1);
  812. binaryWriter.WriteValue(int8);
  813. }
  814. else
  815. {
  816. binaryWriter.WriteValue(0);
  817. }
  818. }
  819. public void Deserialize(EndianBinaryReader binaryReader)
  820. {
  821. if (binaryReader.ReadBoolean())
  822. {
  823. binaryReader.ReadValue(out int1);
  824. }
  825. if (binaryReader.ReadBoolean())
  826. {
  827. binaryReader.ReadValue(out int2);
  828. }
  829. if (binaryReader.ReadBoolean())
  830. {
  831. binaryReader.ReadValue(out int3);
  832. }
  833. if (binaryReader.ReadBoolean())
  834. {
  835. binaryReader.ReadValue(out int4);
  836. }
  837. if (binaryReader.ReadBoolean())
  838. {
  839. binaryReader.ReadValue(out int5);
  840. }
  841. if (binaryReader.ReadBoolean())
  842. {
  843. binaryReader.ReadValue(out int6);
  844. }
  845. if (binaryReader.ReadBoolean())
  846. {
  847. binaryReader.ReadValue(out int7);
  848. }
  849. if (binaryReader.ReadBoolean())
  850. {
  851. binaryReader.ReadValue(out int8);
  852. }
  853. }
  854. }
  855. public class tnumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tnumber>
  856. {
  857. public const int ProtoId = 16;
  858. public number int1;
  859. public number int2;
  860. public number int3;
  861. public number int4;
  862. public number int5;
  863. public number int6;
  864. public number int7;
  865. public number int8;
  866. public number float1;
  867. public number float2;
  868. public byte[] Serialize()
  869. {
  870. using var memoryStream = new MemoryStream();
  871. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  872. Serialize(binaryWriter);
  873. return memoryStream.ToArray();
  874. }
  875. public void Deserialize(byte[] data)
  876. {
  877. using var memoryStream = new MemoryStream(data);
  878. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  879. Deserialize(binaryReader);
  880. }
  881. public void Serialize(EndianBinaryWriter binaryWriter)
  882. {
  883. if (int1 != null)
  884. {
  885. binaryWriter.WriteValue(1);
  886. binaryWriter.WriteValue(int1);
  887. }
  888. else
  889. {
  890. binaryWriter.WriteValue(0);
  891. }
  892. if (int2 != null)
  893. {
  894. binaryWriter.WriteValue(1);
  895. binaryWriter.WriteValue(int2);
  896. }
  897. else
  898. {
  899. binaryWriter.WriteValue(0);
  900. }
  901. if (int3 != null)
  902. {
  903. binaryWriter.WriteValue(1);
  904. binaryWriter.WriteValue(int3);
  905. }
  906. else
  907. {
  908. binaryWriter.WriteValue(0);
  909. }
  910. if (int4 != null)
  911. {
  912. binaryWriter.WriteValue(1);
  913. binaryWriter.WriteValue(int4);
  914. }
  915. else
  916. {
  917. binaryWriter.WriteValue(0);
  918. }
  919. if (int5 != null)
  920. {
  921. binaryWriter.WriteValue(1);
  922. binaryWriter.WriteValue(int5);
  923. }
  924. else
  925. {
  926. binaryWriter.WriteValue(0);
  927. }
  928. if (int6 != null)
  929. {
  930. binaryWriter.WriteValue(1);
  931. binaryWriter.WriteValue(int6);
  932. }
  933. else
  934. {
  935. binaryWriter.WriteValue(0);
  936. }
  937. if (int7 != null)
  938. {
  939. binaryWriter.WriteValue(1);
  940. binaryWriter.WriteValue(int7);
  941. }
  942. else
  943. {
  944. binaryWriter.WriteValue(0);
  945. }
  946. if (int8 != null)
  947. {
  948. binaryWriter.WriteValue(1);
  949. binaryWriter.WriteValue(int8);
  950. }
  951. else
  952. {
  953. binaryWriter.WriteValue(0);
  954. }
  955. if (float1 != null)
  956. {
  957. binaryWriter.WriteValue(1);
  958. binaryWriter.WriteValue(float1);
  959. }
  960. else
  961. {
  962. binaryWriter.WriteValue(0);
  963. }
  964. if (float2 != null)
  965. {
  966. binaryWriter.WriteValue(1);
  967. binaryWriter.WriteValue(float2);
  968. }
  969. else
  970. {
  971. binaryWriter.WriteValue(0);
  972. }
  973. }
  974. public void Deserialize(EndianBinaryReader binaryReader)
  975. {
  976. if (binaryReader.ReadBoolean())
  977. {
  978. binaryReader.ReadValue(out int1);
  979. }
  980. if (binaryReader.ReadBoolean())
  981. {
  982. binaryReader.ReadValue(out int2);
  983. }
  984. if (binaryReader.ReadBoolean())
  985. {
  986. binaryReader.ReadValue(out int3);
  987. }
  988. if (binaryReader.ReadBoolean())
  989. {
  990. binaryReader.ReadValue(out int4);
  991. }
  992. if (binaryReader.ReadBoolean())
  993. {
  994. binaryReader.ReadValue(out int5);
  995. }
  996. if (binaryReader.ReadBoolean())
  997. {
  998. binaryReader.ReadValue(out int6);
  999. }
  1000. if (binaryReader.ReadBoolean())
  1001. {
  1002. binaryReader.ReadValue(out int7);
  1003. }
  1004. if (binaryReader.ReadBoolean())
  1005. {
  1006. binaryReader.ReadValue(out int8);
  1007. }
  1008. if (binaryReader.ReadBoolean())
  1009. {
  1010. binaryReader.ReadValue(out float1);
  1011. }
  1012. if (binaryReader.ReadBoolean())
  1013. {
  1014. binaryReader.ReadValue(out float2);
  1015. }
  1016. }
  1017. }
  1018. public class tfloat : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tfloat>
  1019. {
  1020. public const int ProtoId = 17;
  1021. public float int1;
  1022. public float int2;
  1023. public byte[] Serialize()
  1024. {
  1025. using var memoryStream = new MemoryStream();
  1026. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1027. Serialize(binaryWriter);
  1028. return memoryStream.ToArray();
  1029. }
  1030. public void Deserialize(byte[] data)
  1031. {
  1032. using var memoryStream = new MemoryStream(data);
  1033. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1034. Deserialize(binaryReader);
  1035. }
  1036. public void Serialize(EndianBinaryWriter binaryWriter)
  1037. {
  1038. binaryWriter.WriteValue(int1);
  1039. binaryWriter.WriteValue(int2);
  1040. }
  1041. public void Deserialize(EndianBinaryReader binaryReader)
  1042. {
  1043. binaryReader.ReadValue(out int1);
  1044. binaryReader.ReadValue(out int2);
  1045. }
  1046. }
  1047. public class tdouble : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tdouble>
  1048. {
  1049. public const int ProtoId = 18;
  1050. public double int1;
  1051. public double int2;
  1052. public byte[] Serialize()
  1053. {
  1054. using var memoryStream = new MemoryStream();
  1055. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1056. Serialize(binaryWriter);
  1057. return memoryStream.ToArray();
  1058. }
  1059. public void Deserialize(byte[] data)
  1060. {
  1061. using var memoryStream = new MemoryStream(data);
  1062. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1063. Deserialize(binaryReader);
  1064. }
  1065. public void Serialize(EndianBinaryWriter binaryWriter)
  1066. {
  1067. binaryWriter.WriteValue(int1);
  1068. binaryWriter.WriteValue(int2);
  1069. }
  1070. public void Deserialize(EndianBinaryReader binaryReader)
  1071. {
  1072. binaryReader.ReadValue(out int1);
  1073. binaryReader.ReadValue(out int2);
  1074. }
  1075. }
  1076. public class tstring : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tstring>
  1077. {
  1078. public const int ProtoId = 19;
  1079. public string int1;
  1080. public string int2;
  1081. public byte[] Serialize()
  1082. {
  1083. using var memoryStream = new MemoryStream();
  1084. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1085. Serialize(binaryWriter);
  1086. return memoryStream.ToArray();
  1087. }
  1088. public void Deserialize(byte[] data)
  1089. {
  1090. using var memoryStream = new MemoryStream(data);
  1091. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1092. Deserialize(binaryReader);
  1093. }
  1094. public void Serialize(EndianBinaryWriter binaryWriter)
  1095. {
  1096. binaryWriter.WriteValue(int1);
  1097. binaryWriter.WriteValue(int2);
  1098. }
  1099. public void Deserialize(EndianBinaryReader binaryReader)
  1100. {
  1101. binaryReader.ReadValue(out int1);
  1102. binaryReader.ReadValue(out int2);
  1103. }
  1104. }
  1105. public class tlistbool : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistbool>
  1106. {
  1107. public const int ProtoId = 20;
  1108. public List<bool> int1;
  1109. public byte[] Serialize()
  1110. {
  1111. using var memoryStream = new MemoryStream();
  1112. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1113. Serialize(binaryWriter);
  1114. return memoryStream.ToArray();
  1115. }
  1116. public void Deserialize(byte[] data)
  1117. {
  1118. using var memoryStream = new MemoryStream(data);
  1119. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1120. Deserialize(binaryReader);
  1121. }
  1122. public void Serialize(EndianBinaryWriter binaryWriter)
  1123. {
  1124. binaryWriter.WriteValue(int1);
  1125. }
  1126. public void Deserialize(EndianBinaryReader binaryReader)
  1127. {
  1128. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Boolean);
  1129. }
  1130. }
  1131. public class tlistint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistint8>
  1132. {
  1133. public const int ProtoId = 21;
  1134. public List<sbyte> int1;
  1135. public byte[] Serialize()
  1136. {
  1137. using var memoryStream = new MemoryStream();
  1138. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1139. Serialize(binaryWriter);
  1140. return memoryStream.ToArray();
  1141. }
  1142. public void Deserialize(byte[] data)
  1143. {
  1144. using var memoryStream = new MemoryStream(data);
  1145. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1146. Deserialize(binaryReader);
  1147. }
  1148. public void Serialize(EndianBinaryWriter binaryWriter)
  1149. {
  1150. binaryWriter.WriteValue(int1);
  1151. }
  1152. public void Deserialize(EndianBinaryReader binaryReader)
  1153. {
  1154. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Int8);
  1155. }
  1156. }
  1157. public class tlistuint8 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistuint8>
  1158. {
  1159. public const int ProtoId = 22;
  1160. public List<byte> int1;
  1161. public byte[] Serialize()
  1162. {
  1163. using var memoryStream = new MemoryStream();
  1164. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1165. Serialize(binaryWriter);
  1166. return memoryStream.ToArray();
  1167. }
  1168. public void Deserialize(byte[] data)
  1169. {
  1170. using var memoryStream = new MemoryStream(data);
  1171. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1172. Deserialize(binaryReader);
  1173. }
  1174. public void Serialize(EndianBinaryWriter binaryWriter)
  1175. {
  1176. binaryWriter.WriteValue(int1);
  1177. }
  1178. public void Deserialize(EndianBinaryReader binaryReader)
  1179. {
  1180. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.UInt8);
  1181. }
  1182. }
  1183. public class tlistint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistint16>
  1184. {
  1185. public const int ProtoId = 23;
  1186. public List<short> int1;
  1187. public byte[] Serialize()
  1188. {
  1189. using var memoryStream = new MemoryStream();
  1190. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1191. Serialize(binaryWriter);
  1192. return memoryStream.ToArray();
  1193. }
  1194. public void Deserialize(byte[] data)
  1195. {
  1196. using var memoryStream = new MemoryStream(data);
  1197. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1198. Deserialize(binaryReader);
  1199. }
  1200. public void Serialize(EndianBinaryWriter binaryWriter)
  1201. {
  1202. binaryWriter.WriteValue(int1);
  1203. }
  1204. public void Deserialize(EndianBinaryReader binaryReader)
  1205. {
  1206. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Int16);
  1207. }
  1208. }
  1209. public class tlistuint16 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistuint16>
  1210. {
  1211. public const int ProtoId = 24;
  1212. public List<ushort> int1;
  1213. public byte[] Serialize()
  1214. {
  1215. using var memoryStream = new MemoryStream();
  1216. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1217. Serialize(binaryWriter);
  1218. return memoryStream.ToArray();
  1219. }
  1220. public void Deserialize(byte[] data)
  1221. {
  1222. using var memoryStream = new MemoryStream(data);
  1223. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1224. Deserialize(binaryReader);
  1225. }
  1226. public void Serialize(EndianBinaryWriter binaryWriter)
  1227. {
  1228. binaryWriter.WriteValue(int1);
  1229. }
  1230. public void Deserialize(EndianBinaryReader binaryReader)
  1231. {
  1232. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.UInt16);
  1233. }
  1234. }
  1235. public class tlistint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistint32>
  1236. {
  1237. public const int ProtoId = 25;
  1238. public List<int> int1;
  1239. public byte[] Serialize()
  1240. {
  1241. using var memoryStream = new MemoryStream();
  1242. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1243. Serialize(binaryWriter);
  1244. return memoryStream.ToArray();
  1245. }
  1246. public void Deserialize(byte[] data)
  1247. {
  1248. using var memoryStream = new MemoryStream(data);
  1249. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1250. Deserialize(binaryReader);
  1251. }
  1252. public void Serialize(EndianBinaryWriter binaryWriter)
  1253. {
  1254. binaryWriter.WriteValue(int1);
  1255. }
  1256. public void Deserialize(EndianBinaryReader binaryReader)
  1257. {
  1258. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Int32);
  1259. }
  1260. }
  1261. public class tlistuint32 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistuint32>
  1262. {
  1263. public const int ProtoId = 26;
  1264. public List<uint> int1;
  1265. public byte[] Serialize()
  1266. {
  1267. using var memoryStream = new MemoryStream();
  1268. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1269. Serialize(binaryWriter);
  1270. return memoryStream.ToArray();
  1271. }
  1272. public void Deserialize(byte[] data)
  1273. {
  1274. using var memoryStream = new MemoryStream(data);
  1275. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1276. Deserialize(binaryReader);
  1277. }
  1278. public void Serialize(EndianBinaryWriter binaryWriter)
  1279. {
  1280. binaryWriter.WriteValue(int1);
  1281. }
  1282. public void Deserialize(EndianBinaryReader binaryReader)
  1283. {
  1284. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.UInt32);
  1285. }
  1286. }
  1287. public class tlistint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistint64>
  1288. {
  1289. public const int ProtoId = 27;
  1290. public List<long> int1;
  1291. public byte[] Serialize()
  1292. {
  1293. using var memoryStream = new MemoryStream();
  1294. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1295. Serialize(binaryWriter);
  1296. return memoryStream.ToArray();
  1297. }
  1298. public void Deserialize(byte[] data)
  1299. {
  1300. using var memoryStream = new MemoryStream(data);
  1301. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1302. Deserialize(binaryReader);
  1303. }
  1304. public void Serialize(EndianBinaryWriter binaryWriter)
  1305. {
  1306. binaryWriter.WriteValue(int1);
  1307. }
  1308. public void Deserialize(EndianBinaryReader binaryReader)
  1309. {
  1310. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Int64);
  1311. }
  1312. }
  1313. public class tlistuint64 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistuint64>
  1314. {
  1315. public const int ProtoId = 28;
  1316. public List<ulong> int1;
  1317. public byte[] Serialize()
  1318. {
  1319. using var memoryStream = new MemoryStream();
  1320. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1321. Serialize(binaryWriter);
  1322. return memoryStream.ToArray();
  1323. }
  1324. public void Deserialize(byte[] data)
  1325. {
  1326. using var memoryStream = new MemoryStream(data);
  1327. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1328. Deserialize(binaryReader);
  1329. }
  1330. public void Serialize(EndianBinaryWriter binaryWriter)
  1331. {
  1332. binaryWriter.WriteValue(int1);
  1333. }
  1334. public void Deserialize(EndianBinaryReader binaryReader)
  1335. {
  1336. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.UInt64);
  1337. }
  1338. }
  1339. public class tlistinteger : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistinteger>
  1340. {
  1341. public const int ProtoId = 29;
  1342. public List<integer> int1;
  1343. public byte[] Serialize()
  1344. {
  1345. using var memoryStream = new MemoryStream();
  1346. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1347. Serialize(binaryWriter);
  1348. return memoryStream.ToArray();
  1349. }
  1350. public void Deserialize(byte[] data)
  1351. {
  1352. using var memoryStream = new MemoryStream(data);
  1353. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1354. Deserialize(binaryReader);
  1355. }
  1356. public void Serialize(EndianBinaryWriter binaryWriter)
  1357. {
  1358. binaryWriter.WriteValue(int1);
  1359. }
  1360. public void Deserialize(EndianBinaryReader binaryReader)
  1361. {
  1362. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Custom);
  1363. }
  1364. }
  1365. public class tlistnumber : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistnumber>
  1366. {
  1367. public const int ProtoId = 30;
  1368. public List<number> int1;
  1369. public byte[] Serialize()
  1370. {
  1371. using var memoryStream = new MemoryStream();
  1372. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1373. Serialize(binaryWriter);
  1374. return memoryStream.ToArray();
  1375. }
  1376. public void Deserialize(byte[] data)
  1377. {
  1378. using var memoryStream = new MemoryStream(data);
  1379. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1380. Deserialize(binaryReader);
  1381. }
  1382. public void Serialize(EndianBinaryWriter binaryWriter)
  1383. {
  1384. binaryWriter.WriteValue(int1);
  1385. }
  1386. public void Deserialize(EndianBinaryReader binaryReader)
  1387. {
  1388. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Custom);
  1389. }
  1390. }
  1391. public class tlistfloat : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistfloat>
  1392. {
  1393. public const int ProtoId = 31;
  1394. public List<float> int1;
  1395. public byte[] Serialize()
  1396. {
  1397. using var memoryStream = new MemoryStream();
  1398. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1399. Serialize(binaryWriter);
  1400. return memoryStream.ToArray();
  1401. }
  1402. public void Deserialize(byte[] data)
  1403. {
  1404. using var memoryStream = new MemoryStream(data);
  1405. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1406. Deserialize(binaryReader);
  1407. }
  1408. public void Serialize(EndianBinaryWriter binaryWriter)
  1409. {
  1410. binaryWriter.WriteValue(int1);
  1411. }
  1412. public void Deserialize(EndianBinaryReader binaryReader)
  1413. {
  1414. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Float);
  1415. }
  1416. }
  1417. public class tlistdouble : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistdouble>
  1418. {
  1419. public const int ProtoId = 32;
  1420. public List<double> int1;
  1421. public byte[] Serialize()
  1422. {
  1423. using var memoryStream = new MemoryStream();
  1424. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1425. Serialize(binaryWriter);
  1426. return memoryStream.ToArray();
  1427. }
  1428. public void Deserialize(byte[] data)
  1429. {
  1430. using var memoryStream = new MemoryStream(data);
  1431. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1432. Deserialize(binaryReader);
  1433. }
  1434. public void Serialize(EndianBinaryWriter binaryWriter)
  1435. {
  1436. binaryWriter.WriteValue(int1);
  1437. }
  1438. public void Deserialize(EndianBinaryReader binaryReader)
  1439. {
  1440. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Double);
  1441. }
  1442. }
  1443. public class tliststring : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tliststring>
  1444. {
  1445. public const int ProtoId = 33;
  1446. public List<string> int1;
  1447. public byte[] Serialize()
  1448. {
  1449. using var memoryStream = new MemoryStream();
  1450. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1451. Serialize(binaryWriter);
  1452. return memoryStream.ToArray();
  1453. }
  1454. public void Deserialize(byte[] data)
  1455. {
  1456. using var memoryStream = new MemoryStream(data);
  1457. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1458. Deserialize(binaryReader);
  1459. }
  1460. public void Serialize(EndianBinaryWriter binaryWriter)
  1461. {
  1462. binaryWriter.WriteValue(int1);
  1463. }
  1464. public void Deserialize(EndianBinaryReader binaryReader)
  1465. {
  1466. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.String);
  1467. }
  1468. }
  1469. public class tlistunion : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<tlistunion>
  1470. {
  1471. public const int ProtoId = 34;
  1472. public List<union> int1;
  1473. public byte[] Serialize()
  1474. {
  1475. using var memoryStream = new MemoryStream();
  1476. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1477. Serialize(binaryWriter);
  1478. return memoryStream.ToArray();
  1479. }
  1480. public void Deserialize(byte[] data)
  1481. {
  1482. using var memoryStream = new MemoryStream(data);
  1483. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1484. Deserialize(binaryReader);
  1485. }
  1486. public void Serialize(EndianBinaryWriter binaryWriter)
  1487. {
  1488. binaryWriter.WriteValue(int1);
  1489. }
  1490. public void Deserialize(EndianBinaryReader binaryReader)
  1491. {
  1492. binaryReader.ReadValue(out int1, ProtocolCore.BasicTypeEnum.Custom);
  1493. }
  1494. }
  1495. public class allType : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<allType>
  1496. {
  1497. public const int ProtoId = 35;
  1498. public bool bool;
  1499. public sbyte int8;
  1500. public byte uint8;
  1501. public short int16;
  1502. public ushort uint16;
  1503. public int int32;
  1504. public uint uint32;
  1505. public long int64;
  1506. public ulong uint64;
  1507. public integer inte8;
  1508. public integer uinte8;
  1509. public integer inte16;
  1510. public integer uinte16;
  1511. public integer inte32;
  1512. public integer uinte32;
  1513. public integer inte64;
  1514. public integer uinte64;
  1515. public number num8;
  1516. public number unum8;
  1517. public number num16;
  1518. public number unum16;
  1519. public number num32;
  1520. public number unum32;
  1521. public number num64;
  1522. public number unum64;
  1523. public number numfloat;
  1524. public number numdouble;
  1525. public float float;
  1526. public double double;
  1527. public string string1;
  1528. public string string2;
  1529. public union union;
  1530. public List<bool> lbool;
  1531. public List<sbyte> lint8;
  1532. public List<byte> luint8;
  1533. public List<short> lint16;
  1534. public List<ushort> luint16;
  1535. public List<int> lint32;
  1536. public List<uint> luint32;
  1537. public List<long> lint64;
  1538. public List<ulong> luint64;
  1539. public List<integer> linte8;
  1540. public List<integer> linte16;
  1541. public List<integer> linte32;
  1542. public List<integer> linte64;
  1543. public List<number> lnum8;
  1544. public List<number> lnum16;
  1545. public List<number> lnum32;
  1546. public List<number> lnum64;
  1547. public List<number> lnfloat32;
  1548. public List<number> lnfloat64;
  1549. public List<float> lfloat;
  1550. public List<double> ldouble;
  1551. public List<string> lstring;
  1552. public List<union> lunion;
  1553. public byte[] Serialize()
  1554. {
  1555. using var memoryStream = new MemoryStream();
  1556. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1557. Serialize(binaryWriter);
  1558. return memoryStream.ToArray();
  1559. }
  1560. public void Deserialize(byte[] data)
  1561. {
  1562. using var memoryStream = new MemoryStream(data);
  1563. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1564. Deserialize(binaryReader);
  1565. }
  1566. public void Serialize(EndianBinaryWriter binaryWriter)
  1567. {
  1568. binaryWriter.WriteValue(bool);
  1569. binaryWriter.WriteValue(int8);
  1570. binaryWriter.WriteValue(uint8);
  1571. binaryWriter.WriteValue(int16);
  1572. binaryWriter.WriteValue(uint16);
  1573. binaryWriter.WriteValue(int32);
  1574. binaryWriter.WriteValue(uint32);
  1575. binaryWriter.WriteValue(int64);
  1576. binaryWriter.WriteValue(uint64);
  1577. if (inte8 != null)
  1578. {
  1579. binaryWriter.WriteValue(1);
  1580. binaryWriter.WriteValue(inte8);
  1581. }
  1582. else
  1583. {
  1584. binaryWriter.WriteValue(0);
  1585. }
  1586. if (uinte8 != null)
  1587. {
  1588. binaryWriter.WriteValue(1);
  1589. binaryWriter.WriteValue(uinte8);
  1590. }
  1591. else
  1592. {
  1593. binaryWriter.WriteValue(0);
  1594. }
  1595. if (inte16 != null)
  1596. {
  1597. binaryWriter.WriteValue(1);
  1598. binaryWriter.WriteValue(inte16);
  1599. }
  1600. else
  1601. {
  1602. binaryWriter.WriteValue(0);
  1603. }
  1604. if (uinte16 != null)
  1605. {
  1606. binaryWriter.WriteValue(1);
  1607. binaryWriter.WriteValue(uinte16);
  1608. }
  1609. else
  1610. {
  1611. binaryWriter.WriteValue(0);
  1612. }
  1613. if (inte32 != null)
  1614. {
  1615. binaryWriter.WriteValue(1);
  1616. binaryWriter.WriteValue(inte32);
  1617. }
  1618. else
  1619. {
  1620. binaryWriter.WriteValue(0);
  1621. }
  1622. if (uinte32 != null)
  1623. {
  1624. binaryWriter.WriteValue(1);
  1625. binaryWriter.WriteValue(uinte32);
  1626. }
  1627. else
  1628. {
  1629. binaryWriter.WriteValue(0);
  1630. }
  1631. if (inte64 != null)
  1632. {
  1633. binaryWriter.WriteValue(1);
  1634. binaryWriter.WriteValue(inte64);
  1635. }
  1636. else
  1637. {
  1638. binaryWriter.WriteValue(0);
  1639. }
  1640. if (uinte64 != null)
  1641. {
  1642. binaryWriter.WriteValue(1);
  1643. binaryWriter.WriteValue(uinte64);
  1644. }
  1645. else
  1646. {
  1647. binaryWriter.WriteValue(0);
  1648. }
  1649. if (num8 != null)
  1650. {
  1651. binaryWriter.WriteValue(1);
  1652. binaryWriter.WriteValue(num8);
  1653. }
  1654. else
  1655. {
  1656. binaryWriter.WriteValue(0);
  1657. }
  1658. if (unum8 != null)
  1659. {
  1660. binaryWriter.WriteValue(1);
  1661. binaryWriter.WriteValue(unum8);
  1662. }
  1663. else
  1664. {
  1665. binaryWriter.WriteValue(0);
  1666. }
  1667. if (num16 != null)
  1668. {
  1669. binaryWriter.WriteValue(1);
  1670. binaryWriter.WriteValue(num16);
  1671. }
  1672. else
  1673. {
  1674. binaryWriter.WriteValue(0);
  1675. }
  1676. if (unum16 != null)
  1677. {
  1678. binaryWriter.WriteValue(1);
  1679. binaryWriter.WriteValue(unum16);
  1680. }
  1681. else
  1682. {
  1683. binaryWriter.WriteValue(0);
  1684. }
  1685. if (num32 != null)
  1686. {
  1687. binaryWriter.WriteValue(1);
  1688. binaryWriter.WriteValue(num32);
  1689. }
  1690. else
  1691. {
  1692. binaryWriter.WriteValue(0);
  1693. }
  1694. if (unum32 != null)
  1695. {
  1696. binaryWriter.WriteValue(1);
  1697. binaryWriter.WriteValue(unum32);
  1698. }
  1699. else
  1700. {
  1701. binaryWriter.WriteValue(0);
  1702. }
  1703. if (num64 != null)
  1704. {
  1705. binaryWriter.WriteValue(1);
  1706. binaryWriter.WriteValue(num64);
  1707. }
  1708. else
  1709. {
  1710. binaryWriter.WriteValue(0);
  1711. }
  1712. if (unum64 != null)
  1713. {
  1714. binaryWriter.WriteValue(1);
  1715. binaryWriter.WriteValue(unum64);
  1716. }
  1717. else
  1718. {
  1719. binaryWriter.WriteValue(0);
  1720. }
  1721. if (numfloat != null)
  1722. {
  1723. binaryWriter.WriteValue(1);
  1724. binaryWriter.WriteValue(numfloat);
  1725. }
  1726. else
  1727. {
  1728. binaryWriter.WriteValue(0);
  1729. }
  1730. if (numdouble != null)
  1731. {
  1732. binaryWriter.WriteValue(1);
  1733. binaryWriter.WriteValue(numdouble);
  1734. }
  1735. else
  1736. {
  1737. binaryWriter.WriteValue(0);
  1738. }
  1739. binaryWriter.WriteValue(float);
  1740. binaryWriter.WriteValue(double);
  1741. binaryWriter.WriteValue(string1);
  1742. binaryWriter.WriteValue(string2);
  1743. if (union != null)
  1744. {
  1745. binaryWriter.WriteValue(1);
  1746. binaryWriter.WriteValue(union);
  1747. }
  1748. else
  1749. {
  1750. binaryWriter.WriteValue(0);
  1751. }
  1752. binaryWriter.WriteValue(lbool);
  1753. binaryWriter.WriteValue(lint8);
  1754. binaryWriter.WriteValue(luint8);
  1755. binaryWriter.WriteValue(lint16);
  1756. binaryWriter.WriteValue(luint16);
  1757. binaryWriter.WriteValue(lint32);
  1758. binaryWriter.WriteValue(luint32);
  1759. binaryWriter.WriteValue(lint64);
  1760. binaryWriter.WriteValue(luint64);
  1761. binaryWriter.WriteValue(linte8);
  1762. binaryWriter.WriteValue(linte16);
  1763. binaryWriter.WriteValue(linte32);
  1764. binaryWriter.WriteValue(linte64);
  1765. binaryWriter.WriteValue(lnum8);
  1766. binaryWriter.WriteValue(lnum16);
  1767. binaryWriter.WriteValue(lnum32);
  1768. binaryWriter.WriteValue(lnum64);
  1769. binaryWriter.WriteValue(lnfloat32);
  1770. binaryWriter.WriteValue(lnfloat64);
  1771. binaryWriter.WriteValue(lfloat);
  1772. binaryWriter.WriteValue(ldouble);
  1773. binaryWriter.WriteValue(lstring);
  1774. binaryWriter.WriteValue(lunion);
  1775. }
  1776. public void Deserialize(EndianBinaryReader binaryReader)
  1777. {
  1778. binaryReader.ReadValue(out bool);
  1779. binaryReader.ReadValue(out int8);
  1780. binaryReader.ReadValue(out uint8);
  1781. binaryReader.ReadValue(out int16);
  1782. binaryReader.ReadValue(out uint16);
  1783. binaryReader.ReadValue(out int32);
  1784. binaryReader.ReadValue(out uint32);
  1785. binaryReader.ReadValue(out int64);
  1786. binaryReader.ReadValue(out uint64);
  1787. if (binaryReader.ReadBoolean())
  1788. {
  1789. binaryReader.ReadValue(out inte8);
  1790. }
  1791. if (binaryReader.ReadBoolean())
  1792. {
  1793. binaryReader.ReadValue(out uinte8);
  1794. }
  1795. if (binaryReader.ReadBoolean())
  1796. {
  1797. binaryReader.ReadValue(out inte16);
  1798. }
  1799. if (binaryReader.ReadBoolean())
  1800. {
  1801. binaryReader.ReadValue(out uinte16);
  1802. }
  1803. if (binaryReader.ReadBoolean())
  1804. {
  1805. binaryReader.ReadValue(out inte32);
  1806. }
  1807. if (binaryReader.ReadBoolean())
  1808. {
  1809. binaryReader.ReadValue(out uinte32);
  1810. }
  1811. if (binaryReader.ReadBoolean())
  1812. {
  1813. binaryReader.ReadValue(out inte64);
  1814. }
  1815. if (binaryReader.ReadBoolean())
  1816. {
  1817. binaryReader.ReadValue(out uinte64);
  1818. }
  1819. if (binaryReader.ReadBoolean())
  1820. {
  1821. binaryReader.ReadValue(out num8);
  1822. }
  1823. if (binaryReader.ReadBoolean())
  1824. {
  1825. binaryReader.ReadValue(out unum8);
  1826. }
  1827. if (binaryReader.ReadBoolean())
  1828. {
  1829. binaryReader.ReadValue(out num16);
  1830. }
  1831. if (binaryReader.ReadBoolean())
  1832. {
  1833. binaryReader.ReadValue(out unum16);
  1834. }
  1835. if (binaryReader.ReadBoolean())
  1836. {
  1837. binaryReader.ReadValue(out num32);
  1838. }
  1839. if (binaryReader.ReadBoolean())
  1840. {
  1841. binaryReader.ReadValue(out unum32);
  1842. }
  1843. if (binaryReader.ReadBoolean())
  1844. {
  1845. binaryReader.ReadValue(out num64);
  1846. }
  1847. if (binaryReader.ReadBoolean())
  1848. {
  1849. binaryReader.ReadValue(out unum64);
  1850. }
  1851. if (binaryReader.ReadBoolean())
  1852. {
  1853. binaryReader.ReadValue(out numfloat);
  1854. }
  1855. if (binaryReader.ReadBoolean())
  1856. {
  1857. binaryReader.ReadValue(out numdouble);
  1858. }
  1859. binaryReader.ReadValue(out float);
  1860. binaryReader.ReadValue(out double);
  1861. binaryReader.ReadValue(out string1);
  1862. binaryReader.ReadValue(out string2);
  1863. if (binaryReader.ReadBoolean())
  1864. {
  1865. binaryReader.ReadValue(out union);
  1866. }
  1867. binaryReader.ReadValue(out lbool, ProtocolCore.BasicTypeEnum.Boolean);
  1868. binaryReader.ReadValue(out lint8, ProtocolCore.BasicTypeEnum.Int8);
  1869. binaryReader.ReadValue(out luint8, ProtocolCore.BasicTypeEnum.UInt8);
  1870. binaryReader.ReadValue(out lint16, ProtocolCore.BasicTypeEnum.Int16);
  1871. binaryReader.ReadValue(out luint16, ProtocolCore.BasicTypeEnum.UInt16);
  1872. binaryReader.ReadValue(out lint32, ProtocolCore.BasicTypeEnum.Int32);
  1873. binaryReader.ReadValue(out luint32, ProtocolCore.BasicTypeEnum.UInt32);
  1874. binaryReader.ReadValue(out lint64, ProtocolCore.BasicTypeEnum.Int64);
  1875. binaryReader.ReadValue(out luint64, ProtocolCore.BasicTypeEnum.UInt64);
  1876. binaryReader.ReadValue(out linte8, ProtocolCore.BasicTypeEnum.Custom);
  1877. binaryReader.ReadValue(out linte16, ProtocolCore.BasicTypeEnum.Custom);
  1878. binaryReader.ReadValue(out linte32, ProtocolCore.BasicTypeEnum.Custom);
  1879. binaryReader.ReadValue(out linte64, ProtocolCore.BasicTypeEnum.Custom);
  1880. binaryReader.ReadValue(out lnum8, ProtocolCore.BasicTypeEnum.Custom);
  1881. binaryReader.ReadValue(out lnum16, ProtocolCore.BasicTypeEnum.Custom);
  1882. binaryReader.ReadValue(out lnum32, ProtocolCore.BasicTypeEnum.Custom);
  1883. binaryReader.ReadValue(out lnum64, ProtocolCore.BasicTypeEnum.Custom);
  1884. binaryReader.ReadValue(out lnfloat32, ProtocolCore.BasicTypeEnum.Custom);
  1885. binaryReader.ReadValue(out lnfloat64, ProtocolCore.BasicTypeEnum.Custom);
  1886. binaryReader.ReadValue(out lfloat, ProtocolCore.BasicTypeEnum.Float);
  1887. binaryReader.ReadValue(out ldouble, ProtocolCore.BasicTypeEnum.Double);
  1888. binaryReader.ReadValue(out lstring, ProtocolCore.BasicTypeEnum.String);
  1889. binaryReader.ReadValue(out lunion, ProtocolCore.BasicTypeEnum.Custom);
  1890. }
  1891. }
  1892. public class testnull : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<testnull>
  1893. {
  1894. public const int ProtoId = 36;
  1895. public byte[] Serialize()
  1896. {
  1897. using var memoryStream = new MemoryStream();
  1898. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1899. Serialize(binaryWriter);
  1900. return memoryStream.ToArray();
  1901. }
  1902. public void Deserialize(byte[] data)
  1903. {
  1904. using var memoryStream = new MemoryStream(data);
  1905. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1906. Deserialize(binaryReader);
  1907. }
  1908. public void Serialize(EndianBinaryWriter binaryWriter)
  1909. {
  1910. }
  1911. public void Deserialize(EndianBinaryReader binaryReader)
  1912. {
  1913. }
  1914. }
  1915. public class person1 : ProtocolCore.ISerialize, ProtocolCore.IDeserialize<person1>
  1916. {
  1917. public const int ProtoId = 1001;
  1918. public string name;
  1919. public int id;
  1920. public string email;
  1921. public List<phoneNumber> phone;
  1922. public byte[] Serialize()
  1923. {
  1924. using var memoryStream = new MemoryStream();
  1925. using var binaryWriter = new EndianBinaryWriter(EndianBitConverter.Big, memoryStream);
  1926. Serialize(binaryWriter);
  1927. return memoryStream.ToArray();
  1928. }
  1929. public void Deserialize(byte[] data)
  1930. {
  1931. using var memoryStream = new MemoryStream(data);
  1932. using var binaryReader = new EndianBinaryReader(EndianBitConverter.Big, memoryStream);
  1933. Deserialize(binaryReader);
  1934. }
  1935. public void Serialize(EndianBinaryWriter binaryWriter)
  1936. {
  1937. binaryWriter.WriteValue(name);
  1938. binaryWriter.WriteValue(id);
  1939. binaryWriter.WriteValue(email);
  1940. binaryWriter.WriteValue(phone);
  1941. }
  1942. public void Deserialize(EndianBinaryReader binaryReader)
  1943. {
  1944. binaryReader.ReadValue(out name);
  1945. binaryReader.ReadValue(out id);
  1946. binaryReader.ReadValue(out email);
  1947. binaryReader.ReadValue(out phone, ProtocolCore.BasicTypeEnum.Custom);
  1948. }
  1949. }
  1950. }