Add save/load state mechanism - #38
Closed
fonic wants to merge 2 commits into
Closed
Conversation
Closed
Extend debug message logging / debug output: - add support for message types (debug, info, warning, error) - introduce logging macros to easily log messages (debugf, infof, warnf, errorf) - log messages to user-defined callback instead of file so that application may be decide how to handle debug output - add string conversion functions that may be used in printf-style function calls (address family, IP protocol version, bucket/node ID, socket address, etc.) - add DHT_LOG_ defines to control certain features - add function to retrieve statistics (buckets, good nodes, dubious nodes, total nodes) - modify dump_bucket() and dht_dump_tables() to output tables - migrate all debugf calls to make use of the new capabilities - add additional debug output - modify dht-example to make use of the new capabilities
Add mechanism to save/load state: - add initializers (buckets/buckets6, storage, searches, ...->next) to make sure state is well defined - add functions dht_save_state() and dht_load_state() which save/ load state encoded in binary format to/from buffer - modify dht-example to make use of the new feature (change command line parameter 'i' to 's' to specify state file, load state from file at startup, save state to file at shutdown)
Owner
|
Rejected. Serialisation/deserialisation doesn't belong in the library. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds a mechnism to save the current state and load a previously saved state.
Additions/changes:
dht_save_state()to save statedht_load_state()to load statedht_init()dht-exampleto make use of this featureSaved states include:
Binary format:
<magic><myid><bucket-1><nodes-of-bucket-1>..\<bucket-n><nodes-of-bucket-n>with
<nodes-of-bucket-1> = <node-1-of-bucket-1>...<node-n-of-bucket-1>Both save and load functions work on buffers (much like asprintf), thus the application may decide what to do with the binary data (e.g. write/read to/from binary file, database, XML, ...).
Buckets and nodes are saved/loaded with all their data, thus an application can continue right where it stopped when exiting. I figured saving/loading searches and storage doesn't make much sense, therefore those are not saved.
NOTE:
This is based on my PR #37 to make use of the enhanced debug output features.
Screenshots:

