Denis Blank
c066940d8d
Use new types instead of aliases for type erasures
...
* Makes compiler output much more readable
This is configurateable through CONTINUABLE_WITH_IMMEDIATE_TYPES,
and automatically enabled for debug builds but disabled
for release builds.
* Remove the old continuable-trait.hpp header
* Make the signature of continuable not dependent anymore
on any size of the arguments which fixes the compilation
with forward declared types.
Thanks Rogiel for the correspoding bug report.
Closes #11
2019-01-04 13:12:48 +01:00
Denis Blank
3bd4dd40de
Fixate the args of the final callback
...
* Also allow to customize it through the
CONTINUABLE_WITH_CUSTOM_FINAL_CALLBACK define.
This can be used to implement custom unhandled
exception handlers and more.
2018-12-29 06:25:49 +01:00
Denis Blank
a099c504e1
Workaround for a MSVC required symbol link bug
2018-12-26 06:20:48 +01:00
Denis Blank
7a10363dce
Implement continuable_base<...>::as
...
* Can convert continuables to other compatible signatures
2018-12-26 05:38:10 +01:00
Denis Blank
f469b7058a
Implement make_cancelling_continuable()
...
* Can be used to cancel the chain when being inside a handler
2018-12-25 09:30:23 +01:00
Denis Blank
4127c02c3f
Add an overload to make_result which accepts a exception_arg_t and exception_t
...
* Can be used to forward the result correctly from next handlers
2018-12-25 09:05:51 +01:00
Denis Blank
d052a02595
Remove a bad GCC diagnostic pop when using result<...> and GCC
2018-12-25 08:42:42 +01:00
Denis Blank
7dbc95c4b3
Implement zero cost ready continuables for await expressions
2018-12-16 04:25:56 +01:00
Denis Blank
121265df71
Cleanup in result<>
2018-12-11 01:21:26 +01:00
Denis Blank
4c41995316
Document recover, rethrow and cancel
...
* Closes #9
2018-12-11 01:21:09 +01:00
Denis Blank
dd09c3d684
Bump the version to 4.0.0
2018-12-10 18:08:29 +01:00
Denis Blank
30d49141a8
Resolve ready continuables directly in sequential connections
2018-12-10 06:22:53 +01:00
Denis Blank
c7ef5c6f64
Adhust the SFO buffer size so it can contain a pointer at zero cost
2018-12-10 06:07:43 +01:00
Denis Blank
b2726982ac
Fix the build when coroutines are enabled
2018-12-10 06:03:46 +01:00
Denis Blank
57bb43138b
Fix a recursive template instantiation issue on clang and gcc
2018-12-10 05:08:39 +01:00
Denis Blank
1320c8eb63
Add a unit test which tests for ready continuables explicitly
2018-12-09 17:01:56 +01:00
Denis Blank
1bdee5b371
Remove an unused using
2018-12-09 16:49:03 +01:00
Denis Blank
bdada99096
Fix the immediate return type of chained continuables
...
* Statically resolve ready continuables
2018-12-09 16:48:08 +01:00
Denis Blank
7273891a4c
Specialize the continuation chainer in case ready continuables are chained
2018-12-09 04:53:28 +01:00
Denis Blank
9ceee76647
Fix an issue with the is_ready overload
2018-12-08 17:52:22 +01:00
Denis Blank
4b1f6281fc
Initial work on wrapping all continuations into the triple path schema
2018-12-08 05:53:44 +01:00
Denis Blank
cb6ce5b43b
get_arg_t -> query_arg_t
2018-12-08 04:50:38 +01:00
Denis Blank
24158583b7
Provide the get_arg_t and is_ready_arg_t also from continuables created through make_*
2018-12-08 04:49:03 +01:00
Denis Blank
6947091a27
Preserve the ownership across chainings
...
* Fixes the unit tests
2018-12-08 04:31:32 +01:00
Denis Blank
bcafd1b333
Only consume the data when chaining continuations
2018-12-08 04:19:53 +01:00
Denis Blank
d416698758
Make the ready query stuff part of the private API
2018-12-08 04:11:40 +01:00
Denis Blank
b5f353222c
Make it possible to add optional methods to continuable_base depending on the annotation
2018-12-08 03:28:33 +01:00
Denis Blank
f5dd02ef8b
Some documentation fixes
2018-12-08 02:53:33 +01:00
Denis Blank
969445c8a0
Fix the build
2018-12-08 02:40:10 +01:00
Denis Blank
577b71b8ab
Remove the template args from the void make_ready_continuable
2018-12-08 01:28:27 +01:00
Denis Blank
b293d9a342
Adapt the small functor capacity to hold a ready continuable at zero cost
2018-12-08 01:26:14 +01:00
Denis Blank
da8ec15c6f
Some minor improvements
2018-12-07 04:46:18 +01:00
Denis Blank
62ca39e59c
Some renaming
2018-12-07 04:40:03 +01:00
Denis Blank
f17cc4073c
Add the is_ready proto
2018-11-30 03:05:18 +01:00
Denis Blank
7a5bde328c
Unify the exception and result invoker
2018-11-30 03:04:55 +01:00
Denis Blank
7352cbf8a9
Make it possible to continue with a continuable from failure handlers
2018-11-30 02:10:05 +01:00
Denis Blank
4d58e3bded
Attempt to fix the GCC build
2018-11-28 17:55:01 +01:00
Denis Blank
1edd1e633d
Fix the unit tests
2018-11-28 17:00:35 +01:00
Denis Blank
70c716bb28
Make the failure handler partial applyable
...
* Make result C++17 destructible
* Add unit tests
2018-11-28 01:29:36 +01:00
Denis Blank
bb7112eec2
Fix the build
2018-11-27 16:38:24 +01:00
Denis Blank
f1f9d61952
Attempt to remove the plain handler
2018-11-27 02:39:41 +01:00
Denis Blank
812420cf06
Unify the exception and result handler
...
* Make the failure handler partial applyable
2018-11-26 04:15:40 +01:00
Denis Blank
a9375c7f22
Implement the exception invokers which fully implements recover, rethrow and cancel now
2018-11-26 04:12:17 +01:00
Denis Blank
ca1c0bf1da
Split the logic for exception forwarding
2018-11-26 03:27:35 +01:00
Denis Blank
c5663bf1ad
Add the unit tests for the failure handlers recovering and rethrowing
2018-11-26 03:02:49 +01:00
Denis Blank
afe1a3298e
Make the current unit tests pass
2018-11-26 02:35:27 +01:00
Denis Blank
9955f9e469
Add the invoker for result<...>
2018-11-26 02:19:16 +01:00
Denis Blank
ba9ff9fce0
Initial work on routing the arguments correctly when using result<...>
2018-11-26 00:41:15 +01:00
Denis Blank
7767ce6fbb
Only provide value_t from result
2018-11-25 21:31:08 +01:00
Denis Blank
41da6ba293
Remove the is_result trait
2018-11-25 20:00:41 +01:00
Denis Blank
cd367b3d43
Make result<> return void when calling get_value()
2018-11-25 19:56:03 +01:00
Denis Blank
5354d3512e
Fix the MSVC/Clang build even more
2018-11-25 18:01:15 +01:00
Denis Blank
2a80649084
Make exception and empty results returning a void hint
2018-11-25 17:14:23 +01:00
Denis Blank
782e1c6447
Fix the MSVC build
2018-11-25 17:08:01 +01:00
Denis Blank
f4268f60f9
initial work on the multipathing unit tests
2018-11-25 03:18:35 +01:00
Denis Blank
07c8ed0cf9
Add invoker for the result class and specialized ones
2018-11-25 02:54:35 +01:00
Denis Blank
ffa3b9ee1b
Rename cti::expected -> cti::result
2018-11-25 02:23:08 +01:00
Denis Blank
93b1d27b07
Fix the build for the expected class
2018-11-25 02:13:01 +01:00
Denis Blank
867ab38b8e
Rework the expected_trait
...
* Add tests for the new expected public interface
2018-11-25 00:29:00 +01:00
Denis Blank
c76fe9e973
Make the expected class part of the public interface
...
* Required for exception rethrowing and recovering
2018-11-24 22:57:18 +01:00
Denis Blank
3a70356f16
Move some methods out of the attorney
...
* Code cleanup
2018-11-24 15:02:23 +01:00
Denis Blank
6969a9e392
Expose finish() method in continuable_base which makes it possible
...
to materialize the continuable_base when using it as an expression template.
2018-11-24 14:26:51 +01:00
Denis Blank
0657445466
Re-enable the deprecation warnings
...
* Ref 815c3d71
2018-11-22 00:50:41 +01:00
Denis Blank
815c3d71b9
Make the old error and dispatch tag not throw deprecation warnings for now
2018-11-22 00:48:02 +01:00
Denis Blank
057fb37123
Introduce the continuable primitive header which supplies tags
...
* Adapts the new naming scheme from the "Unified Futures" proposal
* Provides new tags for the future inplace resolution
2018-11-19 23:59:01 +01:00
Denis Blank
8e7af3a320
Add traits::unrefcv_t for later usage
2018-11-19 19:37:53 +01:00
Denis Blank
818b7a7314
Workaround for a regression introduced ~MSVC 15.8.1
2018-11-19 19:27:29 +01:00
Denis Blank
646707e5dc
Move from std::decay to std::decay_t
...
* Makes the transition to traits::unref easier later
2018-11-19 19:26:18 +01:00
Denis Blank
cc83fd5251
Rearrange the internal headers
2018-11-18 18:46:15 +01:00
Denis Blank
c1b8aa8694
Attempt to work around the failing MSVC CI build
2018-11-18 18:11:50 +01:00
Denis Blank
fae030afa3
Fix a compilation error which is caused by regression in one of the MSVC 15.1 updates
2018-11-18 17:46:25 +01:00
Denis Blank
9247e7b85f
Silence a warning when using CONTINUABLE_WITH_UNHANDLED_EXCEPTIONS
...
* Ref e59e6ae8b9
2018-03-19 09:07:34 +01:00
Denis Blank
e59e6ae8b9
Make it easier to inspect unhandled asynchronous exceptions in debuggers
2018-03-17 14:23:19 +01:00
Denis Blank
7dbf22a2d2
Make it possible to remap the result from promisified expressions
2018-03-17 13:24:57 +01:00
Denis Blank
be6571091b
Implement continuables as return types for coroutines
...
* Closes #4
2018-03-14 10:29:45 +01:00
Denis Blank
358e13e06e
Remove unused size traits
2018-03-14 10:29:45 +01:00
Denis Blank
3a5cea7779
std::size_t is part of cstddef not cstdint
2018-03-14 10:29:45 +01:00
Denis Blank
139f7d39de
Remove unused static_if
2018-03-14 10:29:45 +01:00
Denis Blank
65e41a2cbd
Remove unused identity utilities
2018-03-14 10:29:45 +01:00
Denis Blank
83f736a93f
Move the arguments out of a ready continuable with multiple arguments
2018-03-14 10:29:44 +01:00
Denis Blank
f091cbb079
Use a std::apply style unpack
...
* Some cleanup
2018-03-14 10:29:44 +01:00
Denis Blank
41c7cb008a
Add an alias for type erased work objects
2018-03-14 10:29:44 +01:00
Denis Blank
084937e192
Use std::void_t when available
2018-03-12 16:34:55 +01:00
Denis Blank
6e6297194e
Some minor improvements
2018-03-12 08:49:21 +01:00
Denis Blank
9ab9b5e7fb
Rename composition to connection
2018-03-12 08:35:19 +01:00
Denis Blank
093ecae1c0
composition > connection
2018-03-12 08:30:18 +01:00
Denis Blank
cd6f7445f0
Calculate the connection hint directly from the intermediate result
2018-03-12 08:25:44 +01:00
Denis Blank
49a097660b
Move the composition strategies into their own header
2018-03-12 08:05:06 +01:00
Denis Blank
3df06820ef
Make the seq dependency only dependent from the aggregate header
2018-03-12 08:02:43 +01:00
Denis Blank
a3e995c0ce
Improve order dependence for the coroutine detection
2018-03-12 07:24:04 +01:00
Denis Blank
c72d1afa8b
Fix a MSVC test failure
2018-03-12 06:19:34 +01:00
Denis Blank
4c39532d7c
In source documentation improvements
2018-03-12 05:42:27 +01:00
Denis Blank
936a09dac2
Finish the await tutorial
2018-03-11 08:46:46 +01:00
Denis Blank
4665dc931b
Changing promisify::from_asio to promisify::from
2018-03-11 08:23:58 +01:00
Denis Blank
d7c305ad33
More work on the documentation
2018-03-11 08:23:42 +01:00
Denis Blank
60f40415c3
Finish the connection tutorial
2018-03-11 06:40:11 +01:00
Denis Blank
71e219cbe0
Started the connection tutorial
2018-03-11 04:32:12 +01:00
Denis Blank
b031417aa8
Compositions -> Connections
2018-03-10 15:37:05 +01:00
Denis Blank
f6ee04a0c0
Add a configuration documentation section
2018-03-10 14:28:46 +01:00
Denis Blank
8d6a9b6b24
Started the new tutorial section
2018-03-10 10:30:03 +01:00