Swarm MRUs: Adaptive frequency / Predictable lookups / API simplification (#17559)
* swarm/storage/mru: Adaptive Frequency swarm/storage/mru/lookup: fixed getBaseTime Added NewEpoch constructor swarm/api/client: better error handling in GetResource() swarm/storage/mru: Renamed structures. Renamed ResourceMetadata to ResourceID. Renamed ResourceID.Name to ResourceID.Topic swarm/storage/mru: Added binarySerializer interface and test tools swarm/storage/mru/lookup: Changed base time to time and + marshallers swarm/storage/mru: Added ResourceID (former resourceMetadata) swarm/storage/mru: Added ResourceViewId and serialization tests swarm/storage/mru/lookup: fixed epoch unmarshaller. Added Epoch Equals swarm/storage/mru: Fixes as per review comments cmd/swarm: reworded resource create/update help text regarding topic swarm/storage/mru: Added UpdateLookup and serializer tests swarm/storage/mru: Added UpdateHeader, serializers and tests swarm/storage/mru: changed UpdateAddr / epoch to Base() swarm/storage/mru: Added resourceUpdate serializer and tests swarm/storage/mru: Added SignedResourceUpdate tests and serializers swarm/storage/mru/lookup: fixed GetFirstEpoch bug swarm/storage/mru: refactor, comments, cleanup Also added tests for Topic swarm/storage/mru: handler tests pass swarm/storage/mru: all resource package tests pass swarm/storage/mru: resource test pass after adding timestamp checking support swarm/storage/mru: Added JSON serializers to ResourceIDView structures swarm/storage/mru: Sever, client, API test pass swarm/storage/mru: server test pass swarm/storage/mru: Added topic length check swarm/storage/mru: removed some literals, improved "previous lookup" test case swarm/storage/mru: some fixes and comments as per review swarm/storage/mru: first working version without metadata chunk swarm/storage/mru: Various fixes as per review swarm/storage/mru: client test pass swarm/storage/mru: resource query strings and manifest-less queries swarm/storage/mru: simplify naming swarm/storage/mru: first autofreq working version swarm/storage/mru: renamed ToValues to AppendValues swarm/resource/mru: Added ToValues / FromValues for URL query strings swarm/storage/mru: Changed POST resource to work with query strings. No more JSON. swarm/storage/mru: removed resourceid swarm/storage/mru: Opened up structures swarm/storage/mru: Merged Request and SignedResourceUpdate swarm/storage/mru: removed initial data from CLI resource create swarm/storage/mru: Refactor Topic as a direct fixed-length array swarm/storage/mru/lookup: Comprehensive GetNextLevel tests swarm/storage/mru: Added comments Added length checks in Topic swarm/storage/mru: fixes in tests and some code comments swarm/storage/mru/lookup: new optimized lookup algorithm swarm/api: moved getResourceView to api out of server swarm/storage/mru: Lookup algorithm working swarm/storage/mru: comments and renamed NewLookupParams Deleted commented code swarm/storage/mru/lookup: renamed Epoch.LaterThan to After swarm/storage/mru/lookup: Comments and tidying naming swarm/storage/mru: fix lookup algorithm swarm/storage/mru: exposed lookup hint removed updateheader swarm/storage/mru/lookup: changed GetNextEpoch for initial values swarm/storage/mru: resource tests pass swarm/storage/mru: valueSerializer interface and tests swarm/storage/mru/lookup: Comments, improvements, fixes, more tests swarm/storage/mru: renamed UpdateLookup to ID, LookupParams to Query swarm/storage/mru: renamed query receiver var swarm/cmd: MRU CLI tests * cmd/swarm: remove rogue fmt * swarm/storage/mru: Add version / header for future use * swarm/storage/mru: Fixes/comments as per review cmd/swarm: remove rogue fmt swarm/storage/mru: Add version / header for future use- * swarm/storage/mru: fix linter errors * cmd/swarm: Speeded up TestCLIResourceUpdate
This commit is contained in:
		
				
					committed by
					
						 Martin Holst Swende
						Martin Holst Swende
					
				
			
			
				
	
			
			
			
						parent
						
							0da3b17a11
						
					
				
				
					commit
					2c110c81ee
				
			| @@ -203,21 +203,29 @@ var ( | ||||
| 		Usage:  "Number of recent chunks cached in memory (default 5000)", | ||||
| 		EnvVar: SWARM_ENV_STORE_CACHE_CAPACITY, | ||||
| 	} | ||||
| 	SwarmResourceMultihashFlag = cli.BoolFlag{ | ||||
| 		Name:  "multihash", | ||||
| 		Usage: "Determines how to interpret data for a resource update. If not present, data will be interpreted as raw, literal data that will be included in the resource", | ||||
| 	SwarmCompressedFlag = cli.BoolFlag{ | ||||
| 		Name:  "compressed", | ||||
| 		Usage: "Prints encryption keys in compressed form", | ||||
| 	} | ||||
| 	SwarmResourceNameFlag = cli.StringFlag{ | ||||
| 		Name:  "name", | ||||
| 		Usage: "User-defined name for the new resource", | ||||
| 		Usage: "User-defined name for the new resource, limited to 32 characters. If combined with topic, the resource will be a subtopic with this name", | ||||
| 	} | ||||
| 	SwarmResourceTopicFlag = cli.StringFlag{ | ||||
| 		Name:  "topic", | ||||
| 		Usage: "User-defined topic this resource is tracking, hex encoded. Limited to 64 hexadecimal characters", | ||||
| 	} | ||||
| 	SwarmResourceDataOnCreateFlag = cli.StringFlag{ | ||||
| 		Name:  "data", | ||||
| 		Usage: "Initializes the resource with the given hex-encoded data. Data must be prefixed by 0x", | ||||
| 	} | ||||
| 	SwarmCompressedFlag = cli.BoolFlag{ | ||||
| 		Name:  "compressed", | ||||
| 		Usage: "Prints encryption keys in compressed form", | ||||
| 	SwarmResourceManifestFlag = cli.StringFlag{ | ||||
| 		Name:  "manifest", | ||||
| 		Usage: "Refers to the resource through a manifest", | ||||
| 	} | ||||
| 	SwarmResourceUserFlag = cli.StringFlag{ | ||||
| 		Name:  "user", | ||||
| 		Usage: "Indicates the user who updates the resource", | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| @@ -347,27 +355,53 @@ func init() { | ||||
| 					Action:             resourceCreate, | ||||
| 					CustomHelpTemplate: helpTemplate, | ||||
| 					Name:               "create", | ||||
| 					Usage:              "creates a new Mutable Resource", | ||||
| 					ArgsUsage:          "<frequency>", | ||||
| 					Description:        "creates a new Mutable Resource", | ||||
| 					Flags:              []cli.Flag{SwarmResourceNameFlag, SwarmResourceDataOnCreateFlag, SwarmResourceMultihashFlag}, | ||||
| 					Usage:              "creates and publishes a new Mutable Resource manifest", | ||||
| 					Description: `creates and publishes a new Mutable Resource manifest pointing to a specified user's updates about a particular topic. | ||||
| 					The resource topic can be built in the following ways: | ||||
| 					* use --topic to set the topic to an arbitrary binary hex string. | ||||
| 					* use --name to set the topic to a human-readable name. | ||||
| 					    For example --name could be set to "profile-picture", meaning this Mutable Resource allows to get this user's current profile picture. | ||||
| 					* use both --topic and --name to create named subtopics.  | ||||
| 						For example, --topic could be set to an Ethereum contract address and --name could be set to "comments", meaning | ||||
| 						the Mutable Resource tracks a discussion about that contract. | ||||
| 					The --user flag allows to have this manifest refer to a user other than yourself. If not specified, | ||||
| 					it will then default to your local account (--bzzaccount)`, | ||||
| 					Flags: []cli.Flag{SwarmResourceNameFlag, SwarmResourceTopicFlag, SwarmResourceUserFlag}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					Action:             resourceUpdate, | ||||
| 					CustomHelpTemplate: helpTemplate, | ||||
| 					Name:               "update", | ||||
| 					Usage:              "updates the content of an existing Mutable Resource", | ||||
| 					ArgsUsage:          "<Manifest Address or ENS domain> <0x Hex data>", | ||||
| 					Description:        "updates the content of an existing Mutable Resource", | ||||
| 					Flags:              []cli.Flag{SwarmResourceMultihashFlag}, | ||||
| 					ArgsUsage:          "<0x Hex data>", | ||||
| 					Description: `publishes a new update on the specified topic | ||||
| 					The resource topic can be built in the following ways: | ||||
| 					* use --topic to set the topic to an arbitrary binary hex string. | ||||
| 					* use --name to set the topic to a human-readable name. | ||||
| 					    For example --name could be set to "profile-picture", meaning this Mutable Resource allows to get this user's current profile picture. | ||||
| 					* use both --topic and --name to create named subtopics.  | ||||
| 						For example, --topic could be set to an Ethereum contract address and --name could be set to "comments", meaning | ||||
| 						the Mutable Resource tracks a discussion about that contract. | ||||
| 					 | ||||
| 					If you have a manifest, you can specify it with --manifest to refer to the resource, | ||||
| 					instead of using --topic / --name | ||||
| 					`, | ||||
| 					Flags: []cli.Flag{SwarmResourceManifestFlag, SwarmResourceNameFlag, SwarmResourceTopicFlag}, | ||||
| 				}, | ||||
| 				{ | ||||
| 					Action:             resourceInfo, | ||||
| 					CustomHelpTemplate: helpTemplate, | ||||
| 					Name:               "info", | ||||
| 					Usage:              "obtains information about an existing Mutable Resource", | ||||
| 					ArgsUsage:          "<Manifest Address or ENS domain>", | ||||
| 					Description:        "obtains information about an existing Mutable Resource", | ||||
| 					Description: `obtains information about an existing Mutable Resource | ||||
| 					The topic can be specified directly with the --topic flag as an hex string | ||||
| 					If no topic is specified, the default topic (zero) will be used | ||||
| 					The --name flag can be used to specify subtopics with a specific name. | ||||
| 					The --user flag allows to refer to a user other than yourself. If not specified, | ||||
| 					it will then default to your local account (--bzzaccount) | ||||
| 					If you have a manifest, you can specify it with --manifest instead of --topic / --name / ---user | ||||
| 					to refer to the resource`, | ||||
| 					Flags: []cli.Flag{SwarmResourceManifestFlag, SwarmResourceNameFlag, SwarmResourceTopicFlag, SwarmResourceUserFlag}, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user