Commit Graph

218 Commits

Author SHA1 Message Date
Matthias Beyer a3a09ff4ee Fix store creation of libimagstore
The macro may not prefix the StoreId internal PathBuf with '/', so this
path is not absolute. This way we can introduce `storify_id()` which
creates a proper PathBuf into the store out of our StoreId object.

Does not yet do verification whether the path is inside the store,
actually.
2016-03-10 18:46:26 +01:00
Matthias Beyer 3413646934 Revert "Check whether the StoreId is inside the store, before doing anything on the FS"
This reverts commit 373502217e
as this commit was introducing a bug.

The StoreId type says `/test/example` for a store id path, which is
completely valid, as the root (`/`) is the store itself. The
id_in_store() function assumed that the store-id is the full
(file-system) path to the store entry, which is false.

This commit does not introduce a fix but revert the check.
2016-03-10 18:14:53 +01:00
Matthias Beyer 257fe1880e EntryHeader: Function to get toml object 2016-03-06 11:51:09 +01:00
Matthias Beyer 22e9f8a93b Remove unused import 2016-03-01 21:21:14 +01:00
Matthias Beyer 1a8106dfd2 Add missing error-forwarding 2016-03-01 21:20:53 +01:00
Matthias Beyer 38b9e15615 Remove unreachable statement 2016-03-01 21:19:15 +01:00
Matthias Beyer 08c37c5fcb Remove unused "mut" from EntryHeader::delete() 2016-03-01 21:18:17 +01:00
Matthias Beyer ed3da38701 Remove unused "mut" from EntryHeader::read_with_sep() 2016-03-01 21:18:10 +01:00
Matthias Beyer 309e70df14 Remove unused "mut" from EntryHeader::set_with_sep() 2016-03-01 21:18:04 +01:00
Matthias Beyer 85e69f083e Remove unused "mut" from EntryHeader::insert_with_sep() 2016-03-01 21:17:49 +01:00
Matthias Beyer 4390c39a6c Remove unused "mut" from Store::delete() 2016-03-01 21:17:40 +01:00
Matthias Beyer 8dfccba0b8 Remove unused "mut" from Store::retrieve_copy() 2016-03-01 21:17:33 +01:00
Matthias Beyer df4bc13018 use lazy_static so we do not compile regex multiple times 2016-02-20 21:06:47 +01:00
Matthias Beyer 0cab0f114d Merge pull request #149 from matthiasbeyer/libimagstore/header-field-path-util
Add header field addressing by str
2016-02-14 16:10:56 +01:00
Matthias Beyer 9951422dc4 Impl From<Table> for EntryHeader 2016-02-12 22:07:15 +01:00
Matthias Beyer 794e7617e3 Impl Into<Table> for EntryHeader 2016-02-12 22:02:33 +01:00
Matthias Beyer df9313c599 Add EntryHeader::insert_with_sep() 2016-02-12 21:57:53 +01:00
Matthias Beyer 54ba22d0ef Add EntryHeader::set_with_sep() 2016-02-12 21:56:48 +01:00
Matthias Beyer bca0143343 Add EntryHeader::read_with_sep() which allows seperator modification 2016-02-12 21:55:06 +01:00
Matthias Beyer a4fa1bac07 Add split-char setting 2016-02-12 21:50:44 +01:00
Matthias Beyer 6397068ddc Add test for EntryHeader::delete() 2016-02-12 20:02:57 +01:00
Matthias Beyer cb87f31a23 Add EntryHeader::delete() 2016-02-12 20:02:56 +01:00
Matthias Beyer 30e8afeced Add tests for inserting values 2016-02-12 20:02:56 +01:00
Matthias Beyer 965c3445a1 Add test for setting value at new path 2016-02-12 20:02:56 +01:00
Matthias Beyer dd53e467d7 Add EntryHeader::set() test 2016-02-12 20:02:56 +01:00
Matthias Beyer b4362f5c65 Alter: EntryHeader should contain a Value, not the BTreeMap<> 2016-02-12 20:02:56 +01:00
Matthias Beyer 74a9b844ca Add debugging output in tests 2016-02-12 20:02:41 +01:00
Matthias Beyer 60ccf58f84 Merge pull request #148 from neithernut/impl-store-retrieve_copy
Implement Store::retrieve_copy()
2016-02-12 18:59:56 +01:00
Matthias Beyer 103a0dea17 Add test: EntryHeader::read() 2016-02-11 15:45:48 +01:00
Matthias Beyer 731a446546 Implement EntryHeader::read() 2016-02-11 15:45:47 +01:00
Matthias Beyer 548aee8d5f Implement EntryHeader::set() 2016-02-11 15:45:47 +01:00
Matthias Beyer 4d94f8a67f Implement: EntryHeader::insert() 2016-02-11 15:45:47 +01:00
Matthias Beyer 3b09e0c214 Move helper functions outside of walk_header(), so we can use them 2016-02-11 15:45:47 +01:00
Matthias Beyer 42aade5cef Add tests for path-to-value extractor functionality 2016-02-11 15:43:58 +01:00
Matthias Beyer 4759076249 Implement walk_header() 2016-02-11 15:43:58 +01:00
Matthias Beyer 0727fca797 Add tokenizer helper function 2016-02-11 15:43:58 +01:00
Matthias Beyer 2f6cfb5868 Add interface for header field addressing by str 2016-02-11 15:43:58 +01:00
Matthias Beyer 00ccc22ef5 Add some debugging output for {create,retrieve,delete} 2016-02-09 20:09:12 +01:00
Matthias Beyer d85f985694 Fixup path-includes-path checker 2016-02-09 20:08:58 +01:00
Matthias Beyer ddd54e03ad Add store path getter 2016-02-09 13:45:13 +01:00
Matthias Beyer a0afc9245b Merge pull request #186 from TheNeikos/verify-toml_table
Verify that nothing but tables exist in base table
2016-02-07 01:54:35 +01:00
Matthias Beyer ebb076c9fd Merge pull request #184 from matthiasbeyer/libimagstore/fix-179
Check whether the StoreId is inside the store
2016-02-07 01:45:48 +01:00
Marcel Müller e315fa9dcf
Remove unwrap in drop and warn users 2016-02-07 01:28:16 +01:00
Marcel Müller 9ba2439da3
Add debug output 2016-02-07 01:28:15 +01:00
Marcel Müller 6173cff762
Verify that nothing but tables exist in base table 2016-02-07 01:27:50 +01:00
Marcel Müller 293fd0da00
Add verify 2016-02-06 18:57:39 +01:00
Marcel Müller e079628397
Remove unneeded closure 2016-02-06 18:52:17 +01:00
Matthias Beyer 373502217e Check whether the StoreId is inside the store, before doing anything on the FS 2016-02-06 18:48:59 +01:00
Matthias Beyer eb0d1dba69 Merge pull request #176 from matthiasbeyer/update-crate-version
libimagstore: Update dep: version: 1.1.0 -> 2.0.1
2016-02-05 22:04:27 +01:00
Matthias Beyer ddd61f9c1f libimagstore: Update dep: version: 1.1.0 -> 2.0.1 2016-02-05 21:53:26 +01:00
Matthias Beyer 959a68f1a6 Merge pull request #153 from matthiasbeyer/libimagstore/add-debugging-output
Libimagstore/add debugging output
2016-02-05 16:03:23 +01:00
Matthias Beyer 0931ede580 Merge pull request #165 from matthiasbeyer/remove-unused-imports
Remove unused imports
2016-01-30 13:47:57 +01:00
Matthias Beyer 213cb32a88 Fix: Add EntryHeader::toml_mut() 2016-01-30 12:38:36 +01:00
Matthias Beyer f6e03c804e store/store: Remove unused imports 2016-01-29 23:06:15 +01:00
Matthias Beyer fbb296495b Merge pull request #154 from matthiasbeyer/libimagstore/fix-152
Fix: negation error
2016-01-29 19:10:51 +01:00
Matthias Beyer 72cf550c9f Fix: seek() file back on reading it 2016-01-29 18:17:41 +01:00
Matthias Beyer 38791ea2f9 Fix: negation error
Suggested-by: Marcel Müller <neikos@neikos.email>
2016-01-29 16:53:13 +01:00
Matthias Beyer 3b51328aa7 Merge pull request #145 from neithernut/fix-store-retrieve
Fix Store::retrieve()
2016-01-29 16:29:38 +01:00
Matthias Beyer b04c676eb9 Add store debugging output 2016-01-28 21:06:49 +01:00
Julian Ganz c6ec47a8af Change status _after_ calling StoreEntry::get_entry()
StoreEntry::get_entry() will return an error if the store entry's status
is "borrowed".
2016-01-28 20:47:34 +01:00
Julian Ganz 355ec697c1 Implement Store::retrieve_copy() 2016-01-25 22:26:00 +01:00
Julian Ganz 1085127036 Add missing error handling
We don't want to panick if a lock inside the store is broken. We want to
notify the user, so she can start panicking.
2016-01-25 20:38:45 +01:00
Matthias Beyer 6c53f172dc Minify implementation of Store::retrieve() 2016-01-25 15:32:50 +01:00
Julian Ganz 540348380e Mark store entry as borrowed 2016-01-25 12:34:37 +01:00
Julian Ganz 86ab4ba4b1 Slimline translation from entry to file lock entry 2016-01-25 12:32:30 +01:00
Julian Ganz 9760f72e79 get_entry() already asserts the entry is not borrowed 2016-01-25 12:31:22 +01:00
Julian Ganz acfbb16eb2 Fix Store::retrieve()
The previous version of `Store::retrieve()` required the entry to be
already registered in the store's hashmap.
2016-01-24 22:57:11 +01:00
Matthias Beyer 4a08eed700 Merge pull request #144 from matthiasbeyer/libimagstore/add-missing-pub
Fix: Add missing "pub" on Entry functions
2016-01-24 20:29:11 +01:00
Matthias Beyer 82873d82ba Merge pull request #143 from TheNeikos/add-store_update
Implement storenetry:write_entry
2016-01-24 20:25:57 +01:00
Matthias Beyer d24f661778 Fix: Add missing "pub" on Entry functions 2016-01-24 20:20:43 +01:00
Marcel Müller 4e990465c8
Implement storeentry:write_entry 2016-01-24 20:05:33 +01:00
Matthias Beyer bbd08d9526 Add Store::retrieve_for_module() 2016-01-24 17:40:06 +01:00
Marcel Müller ee8cf35fcc
Implement store::create 2016-01-24 17:34:29 +01:00
Marcel Müller c7f584a81a
Add from_str to Entry 2016-01-24 17:04:33 +01:00
Marcel Müller fdc3dde95b
Change names to reflect changes 2016-01-24 17:04:33 +01:00
Marcel Müller 15931d3471
Remove EntryHeader::new_current 2016-01-24 17:04:33 +01:00
Marcel Müller a64ffdfc56
Implement entry reading 2016-01-24 17:04:33 +01:00
Marcel Müller 97b7090824
Partially implement get_entry 2016-01-24 17:04:33 +01:00
Marcel Müller 50413101c4
Move entry, content and header into store 2016-01-24 17:04:32 +01:00
Marcel Müller ba2e52788b
Add entry_creation 2016-01-24 17:04:32 +01:00
Marcel Müller d949cddc65
Implement Store::retrieve 2016-01-24 17:04:32 +01:00
Matthias Beyer c48f3afcf4 Return error if create() fails 2016-01-23 11:57:40 +01:00
Matthias Beyer 80b0501d03 Introduce error if the store path exists but is a file 2016-01-23 11:57:40 +01:00
Matthias Beyer 4f71563eb4 Store::new(): Create path if nonexistent 2016-01-23 11:57:40 +01:00
Homu 2e77afbb3c Auto merge of #125 - TheNeikos:add-store_utils, r=matthiasbeyer
Add store utils

Do not merge yet!!
2016-01-22 10:31:02 -08:00
Homu 7511e220c8 Auto merge of #110 - neithernut:remove-residual-storeentry-methods, r=matthiasbeyer
Remove methods which are not needed anymore

These methods were intended for managing cached entries. Sice it was
decided not to serve caching in the store, these methods are no longer
needed.
2016-01-23 03:06:09 +09:00
Marcel Müller 560e7106f8 iQIcBAABCgAGBQJWomPqAAoJEN1O030MrHbiYEEQALGQfJYEfbCgvVejgiwOKMjv
m7U7nEQbMMVYHVbeCdUs2PXHwCFr8slSccyWoF0QNHX4/Tx5t+XJ9JnRsyIhQyzi
 UWRQo3mHDErn2lP+M+4kfDWPpOdJicJKAxyiLgGo/Aw5CblX9MAaKfE85rZh7atx
 JM567tN+O/Cflt676Mva3xnzpisHFKVJKG58k+QzmZOgNtROWg3PTyAb+/T2c6Vd
 Ty+zW4zt7LwKjGlK9YEDqEwpg3STKUPT9T5S6ZFkPHBbjPVtM5yXK1oTWOpE7zn+
 iXSjCqfC2Ok+MT9YB1loexY2f6bzwqZkmWHl3M+4f1fJfhBQR0Zdz4a/hyp2YLcv
 hVW/X/AeVCdoMOBZ9PCaFjY6aXFycB6HlDDU1jldCN5U08BfY+h6hDtW5xaPLj2s
 WWeyIZgnqLJsGk7VK+/KAdDZMAZVwoC69AVXQS+IjejetQWHY5OFhCBfRVZ02/aX
 jwdZSfw5oNCGsvrzknkcECL9bPQAGRptoLbGuuLNPaACNd8ebWTmw4gwxFYwwAGY
 Dq6NDA33S3uRDvK24MpUA8g5OxsU8kzblhP6iYqGTg0dLnGFRzioKDg3v7NFKN9/
 Yy7g1uQCZIVbrVnZF6w68jfuX6IoIHWl6eg6De2AmMNClYGZflDzbSoYCZkiz1d4
 AR6HHXLT84nAJ2tCgK0S
 =6TMR
 -----END PGP SIGNATURE-----

Add macro to create ModuleEntryPath
2016-01-22 18:16:26 +01:00
Homu bec97f8fc2 Auto merge of #111 - neithernut:impl-store-delete, r=matthiasbeyer
Implement `Store::delete()`

Targets #106.
2016-01-17 10:12:30 -08:00
Julian Ganz 82ed978e90 Styling: remove some whitespace and a scope 2016-01-17 19:08:15 +01:00
Julian Ganz e6c05e4f5b Implement Store::delete() 2016-01-17 18:50:03 +01:00
Homu c4711d2508 Auto merge of #109 - matthiasbeyer:libimagstore/remove-unused-imports, r=matthiasbeyer
Remove unused imports

@TheNeikos
2016-01-18 00:29:49 +09:00
Julian Ganz 66daa255a9 Remove methods which are not needed anymore
These methods were intended for managing cached entries. Sice it was
decided not to serve caching in the store, these methods are no longer
needed.
2016-01-17 16:25:14 +01:00
Matthias Beyer 48071fbc7b Remove unused imports 2016-01-17 16:23:35 +01:00
Matthias Beyer 345e1bffeb Add Store::new() 2016-01-17 16:04:31 +01:00
Marcel Müller 6ec2b02792
Replace Option with enum of presence 2016-01-17 15:28:25 +01:00
Marcel Müller cfc6e860b1
Add documentation to src/store.rs 2016-01-17 15:28:24 +01:00
Marcel Müller 313a0f9d7e
Add missing pub modifiers to Store impl 2016-01-17 15:28:24 +01:00
Marcel Müller 463c182bcc
Use StoreEntry instead of a tuple 2016-01-17 15:28:24 +01:00
Marcel Müller d4c850ef17
Remove export of types 2016-01-17 15:28:24 +01:00
Marcel Müller dcdd67db9e
Add whitespace between implementations 2016-01-17 15:28:24 +01:00
Marcel Müller 418ab5b9eb
Rename path arguments to id 2016-01-17 15:28:24 +01:00
Marcel Müller 044c19f0cc
Add storeid 2016-01-17 15:28:23 +01:00
Marcel Müller 0b7ad4e2fd
Fix inconsistency 2016-01-17 15:26:04 +01:00
Marcel Müller 34f2d4c1f1
Add Drop to FileLockEntry 2016-01-17 15:25:59 +01:00
Marcel Müller 3c80180df0
Revert "Make "Store" a trait"
This reverts commit 912c84e663.
2016-01-16 19:04:15 +01:00
Marcel Müller 676dc9073f
Update Store and FSStore to use FileLockEntry 2016-01-16 18:32:57 +01:00
Marcel Müller 5ab6327d97
Rename read to retrieve 2016-01-16 18:29:04 +01:00
Marcel Müller 52f70e5b71
Add FileLockEntry 2016-01-16 18:25:48 +01:00
Marcel Müller 9d7f20b68e
Merge branch 'neithernut/init-libstore-alt' into add-libstore 2016-01-16 18:08:21 +01:00
Julian Ganz 70883409aa Allow to update an item multiple times 2016-01-16 15:12:10 +01:00
Julian Ganz ba0ef701e9 Use strings correctly 2016-01-16 15:11:20 +01:00
Julian Ganz 6bb48f53f4 Add missing inclusion of SingeUseLock type 2016-01-16 15:08:01 +01:00
Julian Ganz a7d1cdadc0 Add initial version of store interface
The interface enables users to both create and remove entries. It also
features methods for retrieval of both unlocked and lockes entries and a
method for writing back the latter one only.
2016-01-16 07:15:49 +01:00
Matthias Beyer 912c84e663 Make "Store" a trait 2016-01-13 22:03:53 +01:00
Matthias Beyer d23e2f920d impl Drop for Store 2016-01-13 21:51:40 +01:00
Matthias Beyer fff41b447a Add store-internal cache 2016-01-13 21:47:23 +01:00
Matthias Beyer 4f8aacfa5a Fixup: Store type: read() should return Arc<RWLock<>>, update() should take that 2016-01-13 11:53:56 +01:00
Matthias Beyer b1ace253c8 Add Store type for store 2016-01-12 18:52:47 +01:00