erlang自定义二进制协议
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1653 lines
47 KiB

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