Version_0101.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Fire.Container.Exception;
  7. using System.IO;
  8. namespace System.Fire.Container {
  9. public partial class ContainerList {
  10. private void LoadVersion_0101(BinaryReader br) {
  11. byte[] buffer_nameLen = new byte[1];
  12. br.Read(buffer_nameLen, 0, 1);
  13. byte[] buffer_name = new byte[buffer_nameLen[0]];
  14. br.Read(buffer_name, 0, buffer_nameLen[0]);
  15. this._containerName = System.Text.ASCIIEncoding.ASCII.GetString(buffer_name);
  16. byte[] buffer_groupCount = new byte[1];
  17. br.Read(buffer_groupCount, 0, 1);
  18. for (int i = 0; i < buffer_groupCount[0]; i++) {
  19. byte[] buffer_containerCount = new byte[1];
  20. br.Read(buffer_containerCount, 0, 1);
  21. this._container.Add(new List<Container>());
  22. for (int j = 0; j < buffer_containerCount[0]; j++) {
  23. this._container[i].Add(new Container((byte)i, (byte)j, this._path + i + "\\" + j + ".cnt"));
  24. }
  25. }
  26. }
  27. private void LoadFileVersion_0101(BinaryReader br) {
  28. int fileCount = br.ReadInt32();
  29. for (int i = 0, c = fileCount; i < c; i++) {
  30. long size = br.ReadInt64();
  31. long ticks = br.ReadInt64();
  32. byte flags = br.ReadByte();
  33. byte mediaType = br.ReadByte();
  34. long FileInfoPos = br.ReadInt64();
  35. long ChunkPos = br.ReadInt64();
  36. int ChunkLen = br.ReadInt32();
  37. ContainerFile cf = new ContainerFile();
  38. cf.Size = size;
  39. cf.UploadDate = new DateTime(ticks);
  40. cf.Deleted = (flags | 1) == 1;
  41. cf.MediaType = (Mime.eMediaType)mediaType;
  42. cf.FileInfoPos = FileInfoPos;
  43. cf.ChunkPos = ChunkPos;
  44. cf.ChunkLen = ChunkLen;
  45. this._files.Add(cf);
  46. }
  47. }
  48. private bool SaveVersion_0101(BinaryWriter bw) {
  49. bw.Write(Version);
  50. // Version 0x0101
  51. if (this._containerName == null) {
  52. bw.Write((byte)0);
  53. } else {
  54. byte[] xname = System.Text.ASCIIEncoding.ASCII.GetBytes(this._containerName);
  55. bw.Write((byte)xname.Length);
  56. bw.Write(xname);
  57. }
  58. bw.Write((byte)this._container.Count);
  59. for (int i = 0; i < this._container.Count; i++) {
  60. bw.Write((byte)this._container[i].Count);
  61. }
  62. return true;
  63. }
  64. private bool SaveFileVersion_0101(BinaryWriter bw) {
  65. bw.Write(Version);
  66. /*
  67. private long _size; // 8
  68. private DateTime _uploadDate; // 8
  69. private bool bDeleted; // 1
  70. private Mime.eMediaType _mediaType = Mime.eMediaType.Unknown; // 8
  71. private long _fileInfoPos; // 8
  72. private long _chunkPos; // 8
  73. private int _chunkLen; // 4
  74. */
  75. // Version 0x0101
  76. bw.Write(this._files.Count);
  77. for (int i = 0; i < this._files.Count; i++) {
  78. byte flag = 0;
  79. if (this._files[i].Deleted) flag |= 1;
  80. bw.Write(this._files[i].Size);
  81. bw.Write(this._files[i].UploadDate.Ticks);
  82. bw.Write(flag);
  83. bw.Write((byte)this._files[i].MediaType);
  84. bw.Write(this._files[i].FileInfoPos);
  85. bw.Write(this._files[i].ChunkPos);
  86. bw.Write(this._files[i].ChunkLen);
  87. System.Diagnostics.Debug.WriteLine(this._files[i].ToString());
  88. }
  89. return true;
  90. }
  91. }
  92. public partial class ContainerKeyList {
  93. private bool LoadVersion_0101(BinaryReader br) {
  94. this._k = new Dictionary<int, ContainerKey>();
  95. int count = br.ReadInt32();
  96. for (int i = 0; i < count; i++) {
  97. int pos = br.ReadInt32();
  98. int length = br.ReadInt32();
  99. byte[] b = br.ReadBytes(length);
  100. this._k.Add(pos, new ContainerKey(b));
  101. }
  102. return true;
  103. }
  104. private bool SaveVersion_0101(BinaryWriter bw) {
  105. bw.Write(this.Version);
  106. bw.Write(this._k.Count());
  107. foreach (KeyValuePair<int, ContainerKey> kvp in this._k) {
  108. bw.Write(kvp.Key);
  109. bw.Write(kvp.Value.Length);
  110. bw.Write(kvp.Value.Key);
  111. }
  112. return true;
  113. }
  114. }
  115. }