You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

datamap.go 6.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package stgmod
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/types"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. "gitlink.org.cn/cloudream/common/utils/serder"
  6. "time"
  7. )
  8. type Source interface {
  9. }
  10. type Body interface {
  11. }
  12. var _ = serder.UseTypeUnionInternallyTagged(types.Ref(types.NewTypeUnion[Source](
  13. (*SourceCoordinator)(nil),
  14. (*SourceScanner)(nil),
  15. )), "type")
  16. type SourceCoordinator struct {
  17. serder.Metadata `union:"SourceCoordinator"`
  18. Type string `json:"type"`
  19. }
  20. type SourceScanner struct {
  21. serder.Metadata `union:"SourceScanner"`
  22. Type string `json:"type"`
  23. HubID cdssdk.HubID `json:"hubID"`
  24. HubName string `json:"hubName"`
  25. }
  26. var _ = serder.UseTypeUnionInternallyTagged(types.Ref(types.NewTypeUnion[Body](
  27. (*BodyHubInfo)(nil),
  28. (*BodyStorageInfo)(nil),
  29. (*BodyStorageStats)(nil),
  30. (*BodyHubTransferStats)(nil),
  31. (*BodyHubStorageTransferStats)(nil),
  32. (*BodyBlockTransfer)(nil),
  33. (*BodyBlockDistribution)(nil),
  34. (*BodyObjectChange)(nil),
  35. (*BodyPackageChange)(nil),
  36. (*BodyBucketChange)(nil),
  37. )), "type")
  38. type BodyHubInfo struct {
  39. serder.Metadata `union:"BodyHubInfo"`
  40. HubID cdssdk.HubID `json:"hubID"`
  41. HubInfo cdssdk.Hub `json:"hubInfo"`
  42. Type string `json:"type"`
  43. }
  44. type BodyStorageInfo struct {
  45. serder.Metadata `union:"BodyStorageInfo"`
  46. StorageID cdssdk.StorageID `json:"storageID"`
  47. StorageInfo cdssdk.Storage `json:"storageInfo"`
  48. Type string `json:"type"`
  49. }
  50. type BodyStorageStats struct {
  51. serder.Metadata `union:"BodyStorageStats"`
  52. StorageID cdssdk.StorageID `json:"storageID"`
  53. DataCount int64 `json:"dataCount"`
  54. }
  55. type DataTrans struct {
  56. TotalTransfer int64 `json:"totalTransfer"`
  57. RequestCount int64 `json:"requestCount"`
  58. FailedRequestCount int64 `json:"failedRequestCount"`
  59. AvgTransfer int64 `json:"avgTransfer"`
  60. MaxTransfer int64 `json:"maxTransfer"`
  61. MinTransfer int64 `json:"minTransfer"`
  62. }
  63. type BodyHubTransferStats struct {
  64. serder.Metadata `union:"BodyHubTransferStats"`
  65. SourceHubID cdssdk.HubID `json:"sourceHubID"`
  66. TargetHubID cdssdk.HubID `json:"targetHubID"`
  67. Send DataTrans `json:"send"`
  68. StartTimestamp time.Time `json:"startTimestamp"`
  69. EndTimestamp time.Time `json:"endTimestamp"`
  70. }
  71. type BodyHubStorageTransferStats struct {
  72. serder.Metadata `union:"BodyHubStorageTransferStats"`
  73. HubID cdssdk.HubID `json:"hubID"`
  74. StorageID cdssdk.StorageID `json:"storageID"`
  75. Send DataTrans `json:"send"`
  76. Receive DataTrans `json:"receive"`
  77. StartTimestamp time.Time `json:"startTimestamp"`
  78. EndTimestamp time.Time `json:"endTimestamp"`
  79. }
  80. type Block struct {
  81. BlockType string `json:"blockType"`
  82. Index string `json:"index"`
  83. StorageID cdssdk.StorageID `json:"storageID"`
  84. }
  85. type DataTransfer struct {
  86. SourceStorageID cdssdk.StorageID `json:"sourceStorageID"`
  87. TargetStorageID cdssdk.StorageID `json:"targetStorageID"`
  88. DataTransferCount string `json:"dataTransferCount"`
  89. }
  90. type BlockChange struct {
  91. Type string `json:"type"`
  92. BlockType string `json:"blockType"`
  93. Index string `json:"index"`
  94. SourceStorageID cdssdk.StorageID `json:"sourceStorageID"`
  95. TargetStorageID cdssdk.StorageID `json:"targetStorageID"`
  96. DataTransferCount string `json:"dataTransferCount"`
  97. Timestamp time.Time `json:"timestamp"`
  98. SourceBlocks []Block `json:"sourceBlocks,omitempty"`
  99. TargetBlocks []Block `json:"targetBlocks,omitempty"`
  100. DataTransfers []DataTransfer `json:"dataTransfers,omitempty"`
  101. Blocks []Block `json:"blocks,omitempty"`
  102. }
  103. type BodyBlockTransfer struct {
  104. serder.Metadata `union:"BodyBlockTransfer"`
  105. Type string `json:"type"`
  106. ObjectID cdssdk.ObjectID `json:"objectID"`
  107. PackageID cdssdk.PackageID `json:"packageID"`
  108. BlockChanges []BlockChange `json:"blockChanges"`
  109. }
  110. type BlockDistributionObjectInfo struct {
  111. Type string `json:"type"`
  112. Index string `json:"index"`
  113. StorageID string `json:"storageID"`
  114. }
  115. type BlockDistributionObject struct {
  116. ObjectID cdssdk.ObjectID `json:"objectID"`
  117. PackageID cdssdk.PackageID `json:"packageID"`
  118. Path string `json:"path"`
  119. Size int64 `json:"size"`
  120. FileHash string `json:"fileHash"`
  121. FaultTolerance string `json:"faultTolerance"`
  122. Redundancy string `json:"redundancy"`
  123. AvgAccessCost string `json:"avgAccessCost"`
  124. BlockDistribution []BlockDistributionObjectInfo `json:"blockDistribution"`
  125. DataTransfers []DataTransfer `json:"dataTransfers"`
  126. }
  127. type BodyBlockDistribution struct {
  128. serder.Metadata `union:"BodyBlockDistribution"`
  129. Timestamp time.Time `json:"timestamp"`
  130. Object BlockDistributionObject `json:"object,omitempty"`
  131. }
  132. type BodyObjectChange struct {
  133. serder.Metadata `union:"BodyObjectChange"`
  134. Type string `json:"type"`
  135. ObjectID cdssdk.ObjectID `json:"objectID"`
  136. PackageID cdssdk.PackageID `json:"packageID"`
  137. Path string `json:"path"`
  138. Size int `json:"size"`
  139. BlockDistribution []BlockDistributionObjectInfo `json:"blockDistribution"`
  140. Timestamp time.Time `json:"timestamp"`
  141. }
  142. type BodyPackageChange struct {
  143. serder.Metadata `union:"BodyPackageChange"`
  144. Type string `json:"type"`
  145. PackageID cdssdk.PackageID `json:"packageID"`
  146. PackageName string `json:"packageName"`
  147. BucketID cdssdk.BucketID `json:"bucketID"`
  148. Timestamp time.Time `json:"timestamp"`
  149. }
  150. type BodyBucketChange struct {
  151. serder.Metadata `union:"BodyBucketChange"`
  152. Type string `json:"type"`
  153. BucketID cdssdk.BucketID `json:"bucketID"`
  154. BucketName string `json:"bucketName"`
  155. Timestamp time.Time `json:"timestamp"`
  156. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。