Browse Source

Upgrade content_config.rs

iorveth 4 years ago
parent
commit
0a411e772d

+ 32 - 9
node/src/chain_spec/content_config.rs

@@ -23,7 +23,9 @@ struct Content {
 struct ContentData {
     /// DataObject(s) and ContentId
     data_objects: Vec<Content>,
-    quota_limit_upper_bound: u32,
+    quota_size_limit_upper_bound: u64,
+    quota_objects_limit_upper_bound: u64,
+    global_quota: Quota,
 }
 
 #[derive(Deserialize)]
@@ -63,8 +65,12 @@ impl EncodedContent {
 struct EncodedContentData {
     /// EncodedContent
     data_objects: Vec<EncodedContent>,
-    /// hex encoded QuotaLimitUpperBound
-    quota_limit_upper_bound: String,
+    /// hex encoded QuotaSizeLimitUpperBound
+    quota_size_limit_upper_bound: String,
+    /// hex encoded QuotaObjectsLimitUpperBound
+    quota_objects_limit_upper_bound: String,
+    /// hex encoded GlobalQuota
+    global_quota: String,
 }
 
 fn parse_content_data(data_file: &Path) -> EncodedContentData {
@@ -80,12 +86,25 @@ impl EncodedContentData {
                 .iter()
                 .map(|data_objects| data_objects.decode())
                 .collect(),
-            quota_limit_upper_bound: {
-                let encoded_quota_limit_upper_bound =
-                    hex::decode(&self.quota_limit_upper_bound[2..].as_bytes())
+            quota_size_limit_upper_bound: {
+                let encoded_quota_size_limit_upper_bound =
+                    hex::decode(&self.quota_size_limit_upper_bound[2..].as_bytes())
                         .expect("failed to parse data_object hex string");
 
-                Decode::decode(&mut encoded_quota_limit_upper_bound.as_slice()).unwrap()
+                Decode::decode(&mut encoded_quota_size_limit_upper_bound.as_slice()).unwrap()
+            },
+            quota_objects_limit_upper_bound: {
+                let encoded_quota_objects_limit_upper_bound =
+                    hex::decode(&self.quota_objects_limit_upper_bound[2..].as_bytes())
+                        .expect("failed to parse data_object hex string");
+
+                Decode::decode(&mut encoded_quota_objects_limit_upper_bound.as_slice()).unwrap()
+            },
+            global_quota: {
+                let encoded_global_quota = hex::decode(&self.global_quota[2..].as_bytes())
+                    .expect("failed to parse data_object hex string");
+
+                Decode::decode(&mut encoded_global_quota.as_slice()).unwrap()
             },
         }
     }
@@ -97,7 +116,9 @@ pub fn empty_data_directory_config() -> DataDirectoryConfig {
         data_object_by_content_id: vec![],
         known_content_ids: vec![],
         quotas: vec![],
-        quota_limit_upper_bound: 100,
+        quota_size_limit_upper_bound: 20000,
+        quota_objects_limit_upper_bound: 200,
+        global_quota: Quota::new(2000000, 2000),
     }
 }
 
@@ -123,6 +144,8 @@ pub fn data_directory_config_from_json(data_file: &Path) -> DataDirectoryConfig
             .into_iter()
             .map(|object| object.content_id)
             .collect(),
-        quota_limit_upper_bound: content.quota_limit_upper_bound,
+        quota_size_limit_upper_bound: content.quota_size_limit_upper_bound,
+        quota_objects_limit_upper_bound: content.quota_objects_limit_upper_bound,
+        global_quota: content.global_quota,
     }
 }

+ 10 - 0
runtime-modules/storage/src/data_directory.rs

@@ -193,6 +193,16 @@ pub struct Quota {
 }
 
 impl Quota {
+    /// Create new quota with provided size & objects limits
+    pub const fn new(size_limit: u64, objects_limit: u64) -> Self {
+        Self {
+            size_limit,
+            objects_limit,
+            size_used: 0,
+            objects_used: 0,
+        }
+    }
+
     /// Calculate free quota
     pub fn calculate_delta(&self) -> Delta {
         Delta {

+ 2 - 12
runtime-modules/storage/src/tests/mock.rs

@@ -97,12 +97,7 @@ parameter_types! {
     pub const AvailableBlockRatio: Perbill = Perbill::one();
     pub const MinimumPeriod: u64 = 5;
     pub const MaxObjectsPerInjection: u32 = 5;
-    pub const DefaultQuota: Quota = Quota {
-        size_limit: 5000,
-        objects_limit: 50,
-        size_used: 0,
-        objects_used: 0
-    };
+    pub const DefaultQuota: Quota = Quota::new(5000, 50);
 }
 
 impl system::Trait for Test {
@@ -258,12 +253,7 @@ impl Default for ExtBuilder {
         Self {
             quota_objects_limit_upper_bound: 200,
             quota_size_limit_upper_bound: 20000,
-            global_quota: Quota {
-                size_limit: 2000000,
-                objects_limit: 2000,
-                size_used: 0,
-                objects_used: 0,
-            },
+            global_quota: Quota::new(2000000, 2000),
             first_data_object_type_id: 1,
             first_content_id: 2,
             first_relationship_id: 3,

+ 3 - 2
runtime/src/lib.rs

@@ -59,6 +59,7 @@ pub use membership;
 pub use pallet_balances::Call as BalancesCall;
 pub use pallet_staking::StakerStatus;
 pub use proposals_codex::ProposalsConfigParameters;
+use storage::data_directory::Quota;
 pub use storage::{data_directory, data_object_type_registry};
 pub use working_group;
 
@@ -478,7 +479,7 @@ impl memo::Trait for Runtime {
 
 parameter_types! {
     pub const MaxObjectsPerInjection: u32 = 100;
-    pub const DefaultQuotaLimit: u32 = 50;
+    pub const DefaultQuota: Quota = Quota::new(5000, 50);
 }
 
 impl storage::data_object_type_registry::Trait for Runtime {
@@ -491,7 +492,7 @@ impl storage::data_directory::Trait for Runtime {
     type IsActiveDataObjectType = DataObjectTypeRegistry;
     type MemberOriginValidator = MembershipOriginValidator<Self>;
     type MaxObjectsPerInjection = MaxObjectsPerInjection;
-    type DefaultQuotaLimit = DefaultQuotaLimit;
+    type DefaultQuota = DefaultQuota;
 }
 
 impl storage::data_object_storage_registry::Trait for Runtime {