Commit Graph

43 Commits

Author SHA1 Message Date
John Sirois 8ef7b4e0c6 Cleanup `HookError` tracing logic.
Use `Result::or_else` instead of matching and no-oping the `Ok` case
manually and extract a helper to centralize repeated trace logic.
2016-07-14 20:37:16 -06:00
John Sirois 7f57e5e234 Move from a helper function to a typeclass.
This introduces the `FoldResut` trait to move from `func(receiver, ...)`
style to `receiver.func(...)` style. Also add a means to pass the
default result explicitly.
2016-07-14 07:28:54 -06:00
John Sirois 2c40b8734e Add a `fold_ok` utility.
Add a utility that folds an iterator into a result and uses it to reduce
boilerplate in the codebase.
2016-07-13 12:43:04 -06:00
Matthias Beyer 7818b523b9 Deny mutable access for hooks if the config says so 2016-07-07 20:29:24 +02:00
Matthias Beyer b4b719b753 Add error kind for denied hooks 2016-07-06 19:09:58 +02:00
Matthias Beyer 9d37ffef91 Merge pull request #454 from matthiasbeyer/libimagstore/hook-exec-error-fix
Libimagstore/hook exec error fix
2016-05-29 01:31:17 +02:00
Matthias Beyer ce12a22ef5 Merge pull request #440 from matthiasbeyer/libimagstore/load-unload-hooks
Libimagstore/load unload hooks
2016-05-28 23:59:32 +02:00
Matthias Beyer 812379c46d Hook data accessors should implement Debug 2016-05-28 23:47:13 +02:00
Matthias Beyer a42b6a10db Add error tracing support in Aspect implementation
This removes the parallelization feature from the Aspect codebase as
std::error::Error does not implement Send, so we cannot send the error
from a child thread to a parent thread.

This is clearly not an optimal implementation now, but we have hook
non-aborting-error tracing support, which is more important than
parallelization support, at least in this early stage of development.

An issue has to be opened for re-implementing parallelization of hooks.
2016-05-28 21:08:55 +02:00
Matthias Beyer eb80714402 HookError: Add optional non-aborting mode 2016-05-28 21:08:07 +02:00
Matthias Beyer 3d9d5795e4 Rewrite hook error module with error macros 2016-05-27 10:15:29 +02:00
Matthias Beyer cb87b4b5d8 Remove old error code which is unused 2016-05-27 10:13:03 +02:00
Matthias Beyer 2ad5cb48aa Implement store-unload hooks 2016-05-26 21:04:04 +02:00
Matthias Beyer f19c057258 Merge pull request #432 from matthiasbeyer/libimagerror/simple-into
libimagerror: Impl Into<error name> for all <errorkindname>
2016-05-24 15:23:08 +02:00
Matthias Beyer b1f43e3ef5 Impl Into<error name> for all <errorkindname> 2016-05-24 14:31:44 +02:00
Matthias Beyer b6f5b71df1 libimagstore: Refactor code with is_match!() macro 2016-05-23 21:43:20 +02:00
Matthias Beyer cc8642f54f libimagstore: Replace error module imports with macro helper 2016-05-19 18:22:03 +02:00
Matthias Beyer 42f7e086a3 Replace error code with macro for code generation 2016-05-17 00:26:35 +02:00
Andre Bogus 981707c9c9 more style adaptations
again following clippy
2016-05-13 22:27:53 +02:00
Matthias Beyer 94bed5f364 Merge pull request #287 from matthiasbeyer/libimagstore/hooks/fix-missing-tostr-impl
Add missing hook_error_type_as_str() impl
2016-03-26 13:56:43 +01:00
Matthias Beyer 0a181479c8 Merge pull request #277 from matthiasbeyer/libimagstore/remove-unused-aspects
Libimagstore/remove unused aspects
2016-03-26 13:55:46 +01:00
Matthias Beyer ad35d0bf50 Add missing hook_error_type_as_str() impl 2016-03-25 19:17:35 +01:00
Kai Sickeler 797a707c8e removed unused Pre- / PostRead aspects 2016-03-25 15:22:45 +01:00
Matthias Beyer a96ca837c6 Make HookPosition clonable 2016-03-24 17:57:19 +01:00
Matthias Beyer 8aa3f31970 Remove unused variables 2016-03-22 19:43:48 +01:00
Matthias Beyer 2fb59b3ae6 Remove unused imports 2016-03-22 19:43:48 +01:00
Matthias Beyer 65a64774b6 Fix: Allow NonMutableAccess in MutableHookDataAcessor 2016-03-16 16:46:54 +01:00
Matthias Beyer 96deb17515 Aspect: Optionally get configuration 2016-03-16 16:46:54 +01:00
Matthias Beyer 6dae03d731 Hook: Must provide name, gets reference to configuration 2016-03-16 16:46:54 +01:00
Matthias Beyer 9e8ef57f72 Remove {Pre, Post}HookErrorKind types as they are not needed anymore 2016-03-16 16:46:53 +01:00
Matthias Beyer 987b271cc7 Add access type checking error 2016-03-16 16:46:53 +01:00
Matthias Beyer 5ba260943b Make hook execution parallel for NonMutableHookDataAccessor impl for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer 7102a57808 Make hook execution parallel for StoreIdAccessor impl for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer d8760c9737 Impl NonMutableHookDataAccessor::access() for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer c4c02f2274 Impl MutableHookDataAccessor::access_mut() for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer 2022f4e4bb Impl StoreIdAccessor::access() for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer 2c544382a1 We do not need boxes here 2016-03-16 16:46:53 +01:00
Matthias Beyer d6a581e69f Add HookPosition enum 2016-03-16 16:46:52 +01:00
Matthias Beyer 37a505609e Remove hook traits. There can only be one trait: Hook 2016-03-16 16:46:52 +01:00
Matthias Beyer be1ba5be4b Add Aspect type for hook system 2016-03-16 16:46:52 +01:00
Matthias Beyer 3e62b71605 Add StoreIdAccessor trait 2016-03-16 16:46:52 +01:00
Matthias Beyer fa9e8e8192 Split hook/mod.rs into several files 2016-03-16 16:46:52 +01:00
Matthias Beyer 3f15fd0fa8 Move hook.rs -> hook/mod.rs 2016-03-16 16:46:52 +01:00