Index: Cargo.toml
==================================================================
--- Cargo.toml
+++ Cargo.toml
@@ -1,8 +1,8 @@
[package]
name = "ump-ng-server"
-version = "0.3.0"
+version = "0.4.0"
edition = "2021"
license = "0BSD"
categories = [ "concurrency", "asynchronous" ]
keywords = [ "channel", "threads", "sync", "message-passing" ]
repository = "https://repos.qrnch.tech/pub/ump-ng-server"
@@ -21,20 +21,18 @@
tokio = ["dep:tokio", "dep:async-trait"]
tracing = ["dep:tracing"]
watchdog = ["dep:parking_lot"]
[dependencies]
-async-trait = { version = "0.1.77", optional = true }
-parking_lot = { version = "0.12.1", optional = true }
-# "net" is added as a temporary workaround. Without it building the docs fail
-# in tokio.
-tokio = { version = "1.35.1", features = ["net", "rt"], optional = true }
+async-trait = { version = "0.1.82", optional = true }
+parking_lot = { version = "0.12.3", optional = true }
+tokio = { version = "1.40.0", features = ["rt"], optional = true }
tracing = { version = "0.1.40", optional = true }
-ump-ng = { version = "0.1.0" }
+ump-ng = { version = "0.2.0" }
[dev-dependencies]
-tokio-test = { version = "0.4.3" }
+tokio-test = { version = "0.4.4" }
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs", "--generate-link-to-definition"]
ADDED bacon.toml
Index: bacon.toml
==================================================================
--- /dev/null
+++ bacon.toml
@@ -0,0 +1,130 @@
+# This is a configuration file for the bacon tool
+#
+# Bacon repository: https://github.com/Canop/bacon
+# Complete help on configuration: https://dystroy.org/bacon/config/
+# You can also check bacon's own bacon.toml file
+# as an example: https://github.com/Canop/bacon/blob/main/bacon.toml
+
+# For information about clippy lints, see:
+# https://github.com/rust-lang/rust-clippy/blob/master/README.md
+
+#default_job = "check"
+default_job = "clippy-all-pedantic"
+
+[jobs.check]
+command = ["cargo", "check", "--color", "always"]
+need_stdout = false
+
+[jobs.check-all]
+command = ["cargo", "check", "--all-targets", "--color", "always"]
+need_stdout = false
+
+# Run clippy on the default target
+[jobs.clippy]
+command = [
+ "cargo", "clippy",
+ "--color", "always",
+]
+need_stdout = false
+
+# Run clippy on all targets
+# To disable some lints, you may change the job this way:
+# [jobs.clippy-all]
+# command = [
+# "cargo", "clippy",
+# "--all-targets",
+# "--color", "always",
+# "--",
+# "-A", "clippy::bool_to_int_with_if",
+# "-A", "clippy::collapsible_if",
+# "-A", "clippy::derive_partial_eq_without_eq",
+# ]
+# need_stdout = false
+[jobs.clippy-all]
+command = [
+ "cargo", "clippy",
+ "--all-targets",
+ "--color", "always",
+]
+need_stdout = false
+
+[jobs.clippy-pedantic]
+command = [
+ "cargo", "clippy",
+ "--color", "always",
+ "--",
+ "-Wclippy::all",
+ "-Wclippy::pedantic",
+ "-Wclippy::nursery",
+ "-Wclippy::cargo"
+]
+need_stdout = false
+
+[jobs.clippy-all-pedantic]
+command = [
+ "cargo", "clippy",
+ "--all-targets",
+ "--color", "always",
+ "--",
+ "-Wclippy::all",
+ "-Wclippy::pedantic",
+ "-Wclippy::nursery",
+ "-Wclippy::cargo"
+]
+need_stdout = false
+
+# This job lets you run
+# - all tests: bacon test
+# - a specific test: bacon test -- config::test_default_files
+# - the tests of a package: bacon test -- -- -p config
+[jobs.test]
+command = [
+ "cargo", "test", "--color", "always",
+ "--", "--color", "always", # see https://github.com/Canop/bacon/issues/124
+]
+need_stdout = true
+
+[jobs.doc]
+command = ["cargo", "doc", "--color", "always", "--no-deps"]
+need_stdout = false
+
+# If the doc compiles, then it opens in your browser and bacon switches
+# to the previous job
+[jobs.doc-open]
+command = ["cargo", "doc", "--color", "always", "--no-deps", "--open"]
+need_stdout = false
+on_success = "back" # so that we don't open the browser at each change
+
+# You can run your application and have the result displayed in bacon,
+# *if* it makes sense for this crate.
+# Don't forget the `--color always` part or the errors won't be
+# properly parsed.
+# If your program never stops (eg a server), you may set `background`
+# to false to have the cargo run output immediately displayed instead
+# of waiting for program's end.
+[jobs.run]
+command = [
+ "cargo", "run",
+ "--color", "always",
+ # put launch parameters for your program behind a `--` separator
+]
+need_stdout = true
+allow_warnings = true
+background = true
+
+# This parameterized job runs the example of your choice, as soon
+# as the code compiles.
+# Call it as
+# bacon ex -- my-example
+[jobs.ex]
+command = ["cargo", "run", "--color", "always", "--example"]
+need_stdout = true
+allow_warnings = true
+
+# You may define here keybindings that would be specific to
+# a project, for example a shortcut to launch a specific job.
+# Shortcuts to internal functions (scrolling, toggling, etc.)
+# should go in your personal global prefs.toml file instead.
+[keybindings]
+# alt-m = "job:my-job"
+c = "job:clippy-all" # comment this to have 'c' run clippy on only the default target
Index: src/task.rs
==================================================================
--- src/task.rs
+++ src/task.rs
@@ -119,10 +119,14 @@
/// Launch a task that will process incoming messages from an ump-ng server
/// end-point.
///
/// See top module's documentation for an overview of the [dispatch
/// loop](crate#dispatch-loop).
+///
+/// # Errors
+/// An application-defined error `E` is returned if the dispatch loop is
+/// terminated by a handler returning `ControlFlow::Break(E)`.
#[allow(clippy::type_complexity)]
pub fn spawn