running-process 4.3.0__tar.gz → 4.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {running_process-4.3.0 → running_process-4.4.0}/Cargo.lock +2 -2
- {running_process-4.3.0 → running_process-4.4.0}/Cargo.toml +1 -1
- {running_process-4.3.0 → running_process-4.4.0}/PKG-INFO +1 -1
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/adopt.rs +117 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/frame_client.rs +23 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/frame_client_async.rs +11 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/mod.rs +1 -1
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/registry.rs +15 -1
- running_process-4.4.0/crates/running-process/tests/broker/into_backend_io.rs +208 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/main.rs +1 -0
- {running_process-4.3.0 → running_process-4.4.0}/pyproject.toml +1 -1
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/__init__.py +1 -1
- {running_process-4.3.0 → running_process-4.4.0}/LICENSE +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/README.md +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/Cargo.toml +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/README.md +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/build.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/examples/handoff_rollout_evidence.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_admin.proto +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_envelope.proto +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_manifest.proto +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/broker_v1_service_def.proto +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/buf.yaml +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/daemon.proto +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/daemon.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/running-process-broker-v1.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/running-process-cleanup.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/runpm.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/trampoline.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_handle.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/accept_handed_off.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/wire.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/identity.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/probe.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/probe_async.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lifecycle/verify_pid.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/identity_file.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/mux.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/builders.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/capabilities.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/client.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/doctor.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/fs_health.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/host_identity.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/crash_dump.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/names.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/privilege.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/process_tree.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/sid.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/manifest.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/frame_ext.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/framing.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/validate.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/secure_dir.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/admin.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/backend_endpoint_allocator.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/backend_launcher.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/backend_registry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/broadcast.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/connection.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/control_socket.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/fd_pressure.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/ack.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/fallback.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/handoff_token.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/latency.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/orchestrate.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/orchestrate_unix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/pending.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/unix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff/wire.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/handoff_serve.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/hello_handler.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/hello_router.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/idle_coord.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/instance.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/metrics.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/perf_guard.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/recovery.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/serve.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/service_def_loader.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/spawn_coordinator.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/spawn_wait.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/trace_context.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/version_allow_list.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/instances.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/list.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/prune.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/uninstall.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/verify_artifacts.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/cleanup/verify_basic.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/client.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/paths.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/pipe_session.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/pty_session.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/client/telemetry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/console_detect.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/containment.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/attach_stream.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/config.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/emergency_reserve.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/core.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/kill.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/maintenance.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/pipe_sessions_handlers.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/process_tree.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/pty_sessions_handlers.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/registry_handlers.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/services.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/spawn.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/telemetry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers/util.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/handlers_tests.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/idle.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/pipe_attach_stream.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/pipe_sessions.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/platform/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/platform/unix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/platform/windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/pty_sessions.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/reaper.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/registry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/runtime_gc.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/server.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/services.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/shadow.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/daemon/telemetry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/helpers.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/lib.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/maintenance/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/maintenance/release_handles.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/observer/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/observer/tests.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/originator.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/backend.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/child.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/pipes.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/proc_thread_attr.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/conpty_passthrough/pseudoconsole.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/native_pty_process.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/pty_posix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/pty_windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/pty/terminal_input.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/public_symbols.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/rust_debug.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/spawn.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/spawn_imp_unix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/spawn_imp_windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/systemd_killmode.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/terminal_graphics.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/test_support/conformance.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/test_support/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/tests.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/types.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/unix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/admin.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_endpoint_allocator.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_boot_id.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_common.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_dead.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_probe.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_handle_recycled.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_registry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_sdk.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/backend_sdk_async.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/broadcast_release_handles.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/builders.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/client.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/conformance_kit.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/connection.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/contrib_templates.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/docs_escape_hatch.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/docs_index.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/doctor.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/fd_pressure.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/framing.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/golden_bytes.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_ack_deadline.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_adopted_backend.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_adoption.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_backend_lib.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_capability.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_cross_os_acceptance.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_end_to_end_acceptance.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_fallback_perm_denied.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_latency.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_latency_e2e.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_orchestrate.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_serve_e2e.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_serve_latency.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_token_mismatch.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_transport.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_under_load.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_unix_e2e_orchestrate.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_unix_orchestrate.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_windows_duplicate_handle.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_windows_orchestrate.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/handoff_wire.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_concurrent.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_handler.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_rate_limit.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_router.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_service_unknown.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_skip.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/hello_version_blocked.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/idle_coord.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/instance.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/instance_isolation.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/lifecycle_event_size.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_atomic.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_boot_id.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_corruption.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/manifest_roundtrip.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/metrics_names_frozen.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/names.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/peer_creds_drop.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/perf_guard.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/process_tree_lifecycle.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/proto_field_numbers.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/proto_roundtrip.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/recovery_one_retry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/serve.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/service_def_loader.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/servicedef_cli.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/socket_common.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/spawn_coordinator.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/spawn_wait.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/toy_three_party.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/trace_propagation.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/linux.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/macos.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/broker/verify_pid/windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_list.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_prune_confirm.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_prune_dryrun.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_uninstall.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/cleanup_verify_artifacts.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/common.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/cleanup/main.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/containment_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_autostart_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_backlog_accumulation_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_cross_process_pty_attach_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_fast_ctrl_c_handoff_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/compiler_wrap_seam_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/env_replace_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/main.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/more_tests.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_integration/stdout_seam_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_non_tty_attach_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_pipe_session_attach_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_pty_session_attach_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_resize_rpc_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_runpm_service_stubs.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_sessions_bulk_ops_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_sessions_log_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_tee_ring_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_termination_outcome_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_tree_kill_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/daemon_tui_repaint_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/fs_adversarial_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/interactive_pty_session_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/maintenance/main.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/maintenance/release_handles_unix.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/maintenance/release_handles_windows.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/originator_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/process_core_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/pty_conhost_job_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/pty_master_public_api_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cross_user_release_handles.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cve_dbus_2014_3639.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cve_dbus_2023_34969.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/cve_sccache_2023_1521.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/deferred_runtime_surfaces.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/dependency_surface.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/fuzz_campaign_signoff.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/main.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/manifest_tamper_detection.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/no_network_dependencies.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/pipe_name_validation.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/pipe_squatting.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/security_audit_workflow.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/security_fuzz_workflow.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/service_name_validation.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/unsafe_inventory.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/wanted_version_shell_injection.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/security/wanted_version_traversal.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/spawn_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process/tests/terminal_graphics_capabilities_test.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/Cargo.toml +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/containment.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/daemon_client.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/debug_traces.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/helpers.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/idle_detector.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/lib.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/metrics.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/originator.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/pid_tracking.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/priority.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/process.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/process_tree.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/pty_buffer.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/pty_process.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/public_symbols.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/py_native_process.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/registry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/signal_bool.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/terminal_input.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/control_churn.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/expect_match.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/idle_detector.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/mod.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/parse_command.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/process_tree.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/pty_buffer.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/pty_process.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/registry.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/signal_bool.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/running-process-py/src/tests/terminal_input.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/test-watchdog/Cargo.toml +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/test-watchdog/src/lib.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/crates/test-watchdog/tests/hang_dump.rs +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/assets/example.txt +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/cli.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/command_render.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/compat.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/console_encoding.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/daemon.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/dashboard.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/exit_status.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/expect.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/interrupt_handler.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/launch.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/line_iterator.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/output_formatter.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/priority.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/process_utils.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/processor_cli.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/__init__.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_command.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_console_io.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_errors.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_idle_helpers.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_idle_state.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_interactive.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_process_helpers.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pseudo_terminal.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_expect.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_idle_waiter.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_input_relay.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_reader.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_pty_wait_for.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_terminal_strip.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_types.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/pty/_wait_input.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/__init__.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_classmethod_api.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_core.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_helpers.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_iter.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_subprocess.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_types.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process/_wait_methods.py +0 -0
- {running_process-4.3.0 → running_process-4.4.0}/src/running_process/running_process_manager.py +0 -0
|
@@ -1085,7 +1085,7 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
|
|
1085
1085
|
|
|
1086
1086
|
[[package]]
|
|
1087
1087
|
name = "running-process"
|
|
1088
|
-
version = "4.
|
|
1088
|
+
version = "4.4.0"
|
|
1089
1089
|
dependencies = [
|
|
1090
1090
|
"anyhow",
|
|
1091
1091
|
"blake3",
|
|
@@ -1120,7 +1120,7 @@ dependencies = [
|
|
|
1120
1120
|
|
|
1121
1121
|
[[package]]
|
|
1122
1122
|
name = "running-process-py"
|
|
1123
|
-
version = "4.
|
|
1123
|
+
version = "4.4.0"
|
|
1124
1124
|
dependencies = [
|
|
1125
1125
|
"interprocess",
|
|
1126
1126
|
"libc",
|
|
@@ -104,6 +104,103 @@ impl BrokerSession {
|
|
|
104
104
|
pub fn into_client(self) -> FrameClient {
|
|
105
105
|
self.client
|
|
106
106
|
}
|
|
107
|
+
|
|
108
|
+
/// Consume the session and hand back the live negotiated socket as an
|
|
109
|
+
/// owned OS handle (#720).
|
|
110
|
+
///
|
|
111
|
+
/// After adoption has driven the broker handshake to completion, a
|
|
112
|
+
/// consumer that wants to stop speaking the FrameV1 request/response wire
|
|
113
|
+
/// and run its own protocol over the same connection calls this to take
|
|
114
|
+
/// ownership of the raw socket. On Unix the result wraps an
|
|
115
|
+
/// `OwnedFd`; the Windows `OwnedHandle` path is deferred, so this returns
|
|
116
|
+
/// `IntoBackendIoError::WindowsUnsupported` there for now.
|
|
117
|
+
///
|
|
118
|
+
/// Fails with [`IntoBackendIoError::BufferedResidual`] if the frame
|
|
119
|
+
/// reader has buffered response bytes the bare socket would not carry —
|
|
120
|
+
/// which never happens on a freshly adopted session that has issued no
|
|
121
|
+
/// [`request`](Self::request).
|
|
122
|
+
pub fn into_backend_io(self) -> Result<OwnedBackendIo, IntoBackendIoError> {
|
|
123
|
+
let buffered = self.client.buffered_len();
|
|
124
|
+
if buffered != 0 {
|
|
125
|
+
return Err(IntoBackendIoError::BufferedResidual { buffered });
|
|
126
|
+
}
|
|
127
|
+
OwnedBackendIo::from_local_socket_stream(self.client.into_stream())
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/// A live negotiated backend socket handed back as an owned OS handle (#720).
|
|
132
|
+
///
|
|
133
|
+
/// Produced by [`BrokerSession::into_backend_io`] /
|
|
134
|
+
/// `AsyncBrokerSession::into_backend_io`. On Unix it owns an `OwnedFd` the
|
|
135
|
+
/// consumer can wrap in its own transport (e.g.
|
|
136
|
+
/// `std::os::unix::net::UnixStream::from`); the Windows `OwnedHandle` path is
|
|
137
|
+
/// deferred (#720), so the type is never constructed on Windows.
|
|
138
|
+
#[derive(Debug)]
|
|
139
|
+
pub struct OwnedBackendIo {
|
|
140
|
+
// The Windows handle path is deferred (#720). The type still exists so the
|
|
141
|
+
// `into_backend_io` signature is platform-stable, but it carries no handle
|
|
142
|
+
// on Windows and is only ever returned as `Err(WindowsUnsupported)`.
|
|
143
|
+
#[cfg(unix)]
|
|
144
|
+
fd: std::os::fd::OwnedFd,
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
impl OwnedBackendIo {
|
|
148
|
+
#[cfg(unix)]
|
|
149
|
+
fn from_local_socket_stream(
|
|
150
|
+
stream: interprocess::local_socket::Stream,
|
|
151
|
+
) -> Result<Self, IntoBackendIoError> {
|
|
152
|
+
match stream {
|
|
153
|
+
interprocess::local_socket::Stream::UdSocket(uds) => Ok(Self {
|
|
154
|
+
fd: std::os::fd::OwnedFd::from(uds),
|
|
155
|
+
}),
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
#[cfg(windows)]
|
|
160
|
+
fn from_local_socket_stream(
|
|
161
|
+
_stream: interprocess::local_socket::Stream,
|
|
162
|
+
) -> Result<Self, IntoBackendIoError> {
|
|
163
|
+
Err(IntoBackendIoError::WindowsUnsupported)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/// Consume and return the raw owned file descriptor.
|
|
167
|
+
#[cfg(unix)]
|
|
168
|
+
pub fn into_owned_fd(self) -> std::os::fd::OwnedFd {
|
|
169
|
+
self.fd
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
#[cfg(unix)]
|
|
174
|
+
impl std::os::fd::AsFd for OwnedBackendIo {
|
|
175
|
+
fn as_fd(&self) -> std::os::fd::BorrowedFd<'_> {
|
|
176
|
+
self.fd.as_fd()
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/// Errors from [`BrokerSession::into_backend_io`] /
|
|
181
|
+
/// [`AsyncBrokerSession::into_backend_io`].
|
|
182
|
+
#[derive(Debug, thiserror::Error)]
|
|
183
|
+
pub enum IntoBackendIoError {
|
|
184
|
+
/// The frame reader still holds buffered response bytes that the bare
|
|
185
|
+
/// socket would not carry, so the raw handle cannot be taken without
|
|
186
|
+
/// losing them.
|
|
187
|
+
#[error(
|
|
188
|
+
"frame client has {buffered} buffered response byte(s); cannot hand off the raw socket without losing them"
|
|
189
|
+
)]
|
|
190
|
+
BufferedResidual {
|
|
191
|
+
/// Number of bytes buffered by the frame reader.
|
|
192
|
+
buffered: usize,
|
|
193
|
+
},
|
|
194
|
+
/// The async frame client was poisoned by a prior request panic, so its
|
|
195
|
+
/// inner blocking client is gone.
|
|
196
|
+
#[cfg(feature = "client-async")]
|
|
197
|
+
#[error("async frame client was poisoned by a prior request panic")]
|
|
198
|
+
Poisoned,
|
|
199
|
+
/// `into_backend_io()` is not yet supported on Windows; the `OwnedHandle`
|
|
200
|
+
/// path is deferred (#720).
|
|
201
|
+
#[cfg(windows)]
|
|
202
|
+
#[error("into_backend_io() is not yet supported on Windows; the OwnedHandle path is deferred (#720)")]
|
|
203
|
+
WindowsUnsupported,
|
|
107
204
|
}
|
|
108
205
|
|
|
109
206
|
/// Errors from [`BrokerSession::adopt`] / [`AsyncBrokerSession::adopt`].
|
|
@@ -270,4 +367,24 @@ impl AsyncBrokerSession {
|
|
|
270
367
|
pub fn into_client(self) -> crate::broker::backend_sdk::AsyncFrameClient {
|
|
271
368
|
self.client
|
|
272
369
|
}
|
|
370
|
+
|
|
371
|
+
/// Consume the session and hand back the live negotiated socket as an
|
|
372
|
+
/// owned OS handle (#720).
|
|
373
|
+
///
|
|
374
|
+
/// Async twin of [`BrokerSession::into_backend_io`]. No `.await` is
|
|
375
|
+
/// needed: the inner blocking client already owns the connected socket, so
|
|
376
|
+
/// taking the raw handle out is a synchronous unwrap. Fails with
|
|
377
|
+
/// [`IntoBackendIoError::Poisoned`] if a prior [`request`](Self::request)
|
|
378
|
+
/// panicked inside `spawn_blocking` and left the client slot empty.
|
|
379
|
+
pub fn into_backend_io(self) -> Result<OwnedBackendIo, IntoBackendIoError> {
|
|
380
|
+
let client = self
|
|
381
|
+
.client
|
|
382
|
+
.into_blocking()
|
|
383
|
+
.ok_or(IntoBackendIoError::Poisoned)?;
|
|
384
|
+
let buffered = client.buffered_len();
|
|
385
|
+
if buffered != 0 {
|
|
386
|
+
return Err(IntoBackendIoError::BufferedResidual { buffered });
|
|
387
|
+
}
|
|
388
|
+
OwnedBackendIo::from_local_socket_stream(client.into_stream())
|
|
389
|
+
}
|
|
273
390
|
}
|
|
@@ -108,6 +108,29 @@ impl FrameClient {
|
|
|
108
108
|
pub fn next_request_id(&self) -> u64 {
|
|
109
109
|
self.next_request_id
|
|
110
110
|
}
|
|
111
|
+
|
|
112
|
+
/// Bytes the internal frame reader has buffered but not yet consumed.
|
|
113
|
+
///
|
|
114
|
+
/// Zero on a client that has issued no [`Self::request`]. A consumer that
|
|
115
|
+
/// wants to take the raw socket back out via [`Self::into_stream`] checks
|
|
116
|
+
/// this first: nonzero means there is response data the bare socket would
|
|
117
|
+
/// not carry, so the take must be refused.
|
|
118
|
+
pub fn buffered_len(&self) -> usize {
|
|
119
|
+
self.stream.buffer().len()
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/// Consume the client and return the underlying local-socket stream.
|
|
123
|
+
///
|
|
124
|
+
/// Hands the negotiated socket back to a consumer that will speak its own
|
|
125
|
+
/// wire over it (see [`BrokerSession::into_backend_io`]). Any bytes still
|
|
126
|
+
/// buffered by the frame reader are dropped, so callers must verify
|
|
127
|
+
/// [`Self::buffered_len`] is zero before calling — which it always is on a
|
|
128
|
+
/// freshly adopted session that has issued no request.
|
|
129
|
+
///
|
|
130
|
+
/// [`BrokerSession::into_backend_io`]: crate::broker::adopt::BrokerSession::into_backend_io
|
|
131
|
+
pub fn into_stream(self) -> interprocess::local_socket::Stream {
|
|
132
|
+
self.stream.into_inner()
|
|
133
|
+
}
|
|
111
134
|
}
|
|
112
135
|
|
|
113
136
|
/// Errors returned by [`FrameClient`].
|
|
@@ -167,6 +167,17 @@ impl AsyncFrameClient {
|
|
|
167
167
|
pub fn next_request_id(&self) -> Option<u64> {
|
|
168
168
|
self.inner.as_ref().map(FrameClient::next_request_id)
|
|
169
169
|
}
|
|
170
|
+
|
|
171
|
+
/// Recover the owned blocking [`FrameClient`], or `None` if a prior
|
|
172
|
+
/// request panicked inside `spawn_blocking` and poisoned the slot.
|
|
173
|
+
///
|
|
174
|
+
/// Used by [`AsyncBrokerSession::into_backend_io`] to take the
|
|
175
|
+
/// negotiated socket back out without crossing another async hop.
|
|
176
|
+
///
|
|
177
|
+
/// [`AsyncBrokerSession::into_backend_io`]: crate::broker::adopt::AsyncBrokerSession::into_backend_io
|
|
178
|
+
pub fn into_blocking(self) -> Option<FrameClient> {
|
|
179
|
+
self.inner
|
|
180
|
+
}
|
|
170
181
|
}
|
|
171
182
|
|
|
172
183
|
fn join_error_to_client(join_err: tokio::task::JoinError) -> FrameClientError {
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/protocol/mod.rs
RENAMED
|
@@ -34,6 +34,6 @@ pub use framing::{
|
|
|
34
34
|
};
|
|
35
35
|
pub use registry::{
|
|
36
36
|
ADMIN_PAYLOAD_PROTOCOL, BACKEND_HANDLE_PROBE_PAYLOAD_PROTOCOL, CONTROL_PAYLOAD_PROTOCOL,
|
|
37
|
-
HANDOFF_PAYLOAD_PROTOCOL, PROTOCOL_VERSION, ZCCACHE_PAYLOAD_PROTOCOL,
|
|
37
|
+
FBUILD_PAYLOAD_PROTOCOL, HANDOFF_PAYLOAD_PROTOCOL, PROTOCOL_VERSION, ZCCACHE_PAYLOAD_PROTOCOL,
|
|
38
38
|
};
|
|
39
39
|
pub use validate::{validate_frame_envelope, FrameValidationError};
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
//! |----------|------------------------------|------------------------------------------------------------------|
|
|
44
44
|
//! | `0x7A63` | [`ZCCACHE_PAYLOAD_PROTOCOL`] | zccache (`"zc"` in ASCII; zccache FrameV1 request/response lane) |
|
|
45
45
|
//! | `0x7C4C` | [`CLUD_PAYLOAD_PROTOCOL`] | clud (`0x7C4C` = `"|L"`; clud daemon Frame v1 request/response lane) |
|
|
46
|
+
//! | `0x7EB1` | [`FBUILD_PAYLOAD_PROTOCOL`] | fbuild (FastLED/fbuild daemon Frame v1 request/response lane) |
|
|
46
47
|
//!
|
|
47
48
|
//! Use [`crate::register_payload_protocol!`] in consumer crates to pin
|
|
48
49
|
//! the chosen ID with compile-time range and collision checks.
|
|
@@ -112,6 +113,12 @@ pub const ZCCACHE_PAYLOAD_PROTOCOL: u32 = 0x7A63;
|
|
|
112
113
|
/// authoritative registration lives here.
|
|
113
114
|
pub const CLUD_PAYLOAD_PROTOCOL: u32 = 0x7C4C;
|
|
114
115
|
|
|
116
|
+
/// Registered consumer ID: fbuild's opaque Frame v1 request/response lane
|
|
117
|
+
/// (FastLED/fbuild daemon control plane; zackees/running-process#437). fbuild
|
|
118
|
+
/// pins this value on its side with [`crate::register_payload_protocol!`]; the
|
|
119
|
+
/// authoritative registration lives here.
|
|
120
|
+
pub const FBUILD_PAYLOAD_PROTOCOL: u32 = 0x7EB1;
|
|
121
|
+
|
|
115
122
|
/// All first-party payload-protocol IDs, in registry-table order.
|
|
116
123
|
///
|
|
117
124
|
/// Used by [`is_first_party`] and the consumer-side collision checks
|
|
@@ -239,7 +246,7 @@ mod tests {
|
|
|
239
246
|
fn frozen_consumer_registry_values() {
|
|
240
247
|
use super::{
|
|
241
248
|
is_first_party, is_private_use_id, is_registered_consumer_id, CLUD_PAYLOAD_PROTOCOL,
|
|
242
|
-
CONSUMER_PAYLOAD_PROTOCOL_MAX, CONSUMER_PAYLOAD_PROTOCOL_MIN,
|
|
249
|
+
CONSUMER_PAYLOAD_PROTOCOL_MAX, CONSUMER_PAYLOAD_PROTOCOL_MIN, FBUILD_PAYLOAD_PROTOCOL,
|
|
243
250
|
PRIVATE_USE_PAYLOAD_PROTOCOL_MAX, PRIVATE_USE_PAYLOAD_PROTOCOL_MIN,
|
|
244
251
|
ZCCACHE_PAYLOAD_PROTOCOL,
|
|
245
252
|
};
|
|
@@ -250,7 +257,10 @@ mod tests {
|
|
|
250
257
|
assert_eq!(PRIVATE_USE_PAYLOAD_PROTOCOL_MAX, 0xFFFF);
|
|
251
258
|
assert_eq!(ZCCACHE_PAYLOAD_PROTOCOL, 0x7A63);
|
|
252
259
|
assert_eq!(CLUD_PAYLOAD_PROTOCOL, 0x7C4C);
|
|
260
|
+
assert_eq!(FBUILD_PAYLOAD_PROTOCOL, 0x7EB1);
|
|
253
261
|
assert_ne!(CLUD_PAYLOAD_PROTOCOL, ZCCACHE_PAYLOAD_PROTOCOL);
|
|
262
|
+
assert_ne!(FBUILD_PAYLOAD_PROTOCOL, ZCCACHE_PAYLOAD_PROTOCOL);
|
|
263
|
+
assert_ne!(FBUILD_PAYLOAD_PROTOCOL, CLUD_PAYLOAD_PROTOCOL);
|
|
254
264
|
|
|
255
265
|
assert!(is_registered_consumer_id(ZCCACHE_PAYLOAD_PROTOCOL));
|
|
256
266
|
assert!(!is_first_party(ZCCACHE_PAYLOAD_PROTOCOL));
|
|
@@ -260,6 +270,10 @@ mod tests {
|
|
|
260
270
|
assert!(!is_first_party(CLUD_PAYLOAD_PROTOCOL));
|
|
261
271
|
assert!(!is_private_use_id(CLUD_PAYLOAD_PROTOCOL));
|
|
262
272
|
|
|
273
|
+
assert!(is_registered_consumer_id(FBUILD_PAYLOAD_PROTOCOL));
|
|
274
|
+
assert!(!is_first_party(FBUILD_PAYLOAD_PROTOCOL));
|
|
275
|
+
assert!(!is_private_use_id(FBUILD_PAYLOAD_PROTOCOL));
|
|
276
|
+
|
|
263
277
|
// First-party IDs must never drift into the consumer range.
|
|
264
278
|
for id in super::FIRST_PARTY_PAYLOAD_PROTOCOLS {
|
|
265
279
|
assert!(is_first_party(id));
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
//! End-to-end coverage for [`BrokerSession::into_backend_io`] (#720).
|
|
2
|
+
//!
|
|
3
|
+
//! A consumer adopts through the broker, then — instead of speaking the
|
|
4
|
+
//! FrameV1 request/response wire — takes ownership of the live negotiated
|
|
5
|
+
//! socket and runs its own raw protocol over it. On Unix the handed-back
|
|
6
|
+
//! [`OwnedFd`](std::os::fd::OwnedFd) is wrapped in a
|
|
7
|
+
//! [`std::os::unix::net::UnixStream`] and proven live with a raw echo
|
|
8
|
+
//! round-trip. On Windows the `OwnedHandle` path is deferred, so
|
|
9
|
+
//! `into_backend_io()` reports [`IntoBackendIoError::WindowsUnsupported`].
|
|
10
|
+
|
|
11
|
+
use std::io::{self, Read, Write};
|
|
12
|
+
use std::sync::mpsc;
|
|
13
|
+
use std::thread;
|
|
14
|
+
|
|
15
|
+
use interprocess::local_socket::traits::Listener as _;
|
|
16
|
+
use running_process::broker::adopt::BrokerSession;
|
|
17
|
+
#[cfg(all(unix, feature = "client-async"))]
|
|
18
|
+
use running_process::broker::adopt::{AsyncBrokerSession, OwnedConnectRequest};
|
|
19
|
+
use running_process::broker::client::{BackendConnectionRoute, ConnectBackendRequest};
|
|
20
|
+
use running_process::broker::protocol::{BrokerIsolation, ServiceDefinition};
|
|
21
|
+
use running_process::broker::server::{
|
|
22
|
+
handle_hello_connection, HelloHandler, PeerIdentity, RegisteredBackend,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
use crate::socket_common::{
|
|
26
|
+
await_test_socket_ready, bind_ready_test_socket, cleanup_test_socket, unique_socket_name,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const IO_SERVICE: &str = "io-test";
|
|
30
|
+
const IO_VERSION: &str = "1.0.0";
|
|
31
|
+
|
|
32
|
+
fn io_service_definition() -> ServiceDefinition {
|
|
33
|
+
ServiceDefinition {
|
|
34
|
+
service_name: IO_SERVICE.into(),
|
|
35
|
+
binary_path: "/usr/local/bin/io-test".into(),
|
|
36
|
+
isolation: BrokerIsolation::SharedBroker as i32,
|
|
37
|
+
explicit_instance: String::new(),
|
|
38
|
+
per_version_binary_dir: String::new(),
|
|
39
|
+
min_version: "1.0.0".into(),
|
|
40
|
+
version_allow_list: vec![IO_VERSION.into()],
|
|
41
|
+
labels: Default::default(),
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// Broker that negotiates one Hello and points the client at `backend_socket`.
|
|
46
|
+
fn spawn_broker(
|
|
47
|
+
broker_socket: String,
|
|
48
|
+
backend_socket: String,
|
|
49
|
+
) -> thread::JoinHandle<io::Result<()>> {
|
|
50
|
+
let display = broker_socket.clone();
|
|
51
|
+
let (ready_tx, ready_rx) = mpsc::channel();
|
|
52
|
+
let handle = thread::spawn(move || {
|
|
53
|
+
let listener = bind_ready_test_socket(&broker_socket, &ready_tx)?;
|
|
54
|
+
let handler = HelloHandler::new()
|
|
55
|
+
.with_backend(RegisteredBackend {
|
|
56
|
+
service_definition: io_service_definition(),
|
|
57
|
+
daemon_version: IO_VERSION.into(),
|
|
58
|
+
backend_pipe: backend_socket.clone(),
|
|
59
|
+
server_capabilities: 0x01,
|
|
60
|
+
})
|
|
61
|
+
.map_err(|err| io::Error::other(err.to_string()))?;
|
|
62
|
+
let mut stream = listener.accept()?;
|
|
63
|
+
let peer = PeerIdentity {
|
|
64
|
+
pid: std::process::id(),
|
|
65
|
+
uid_or_sid: "io-peer".into(),
|
|
66
|
+
};
|
|
67
|
+
handle_hello_connection(&mut stream, &handler, peer)
|
|
68
|
+
.map_err(|err| io::Error::other(err.to_string()))?;
|
|
69
|
+
cleanup_test_socket(&broker_socket);
|
|
70
|
+
Ok(())
|
|
71
|
+
});
|
|
72
|
+
await_test_socket_ready(&ready_rx, &display);
|
|
73
|
+
handle
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/// Backend that accepts one connection and echoes raw bytes until EOF.
|
|
77
|
+
///
|
|
78
|
+
/// Unlike the [`BackendEndpointMux`](running_process::broker::backend_sdk::BackendEndpointMux)
|
|
79
|
+
/// app daemons, this speaks no frame wire: it proves the socket handed back by
|
|
80
|
+
/// `into_backend_io()` is the live negotiated connection by mirroring whatever
|
|
81
|
+
/// the consumer writes over it directly.
|
|
82
|
+
fn spawn_raw_echo_backend(backend_socket: String) -> thread::JoinHandle<io::Result<()>> {
|
|
83
|
+
let display = backend_socket.clone();
|
|
84
|
+
let (ready_tx, ready_rx) = mpsc::channel();
|
|
85
|
+
let handle = thread::spawn(move || {
|
|
86
|
+
let listener = bind_ready_test_socket(&backend_socket, &ready_tx)?;
|
|
87
|
+
let mut stream = listener.accept()?;
|
|
88
|
+
let mut chunk = [0u8; 4096];
|
|
89
|
+
loop {
|
|
90
|
+
let read = stream.read(&mut chunk)?;
|
|
91
|
+
if read == 0 {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
stream.write_all(&chunk[..read])?;
|
|
95
|
+
stream.flush()?;
|
|
96
|
+
}
|
|
97
|
+
cleanup_test_socket(&backend_socket);
|
|
98
|
+
Ok(())
|
|
99
|
+
});
|
|
100
|
+
await_test_socket_ready(&ready_rx, &display);
|
|
101
|
+
handle
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
#[cfg(unix)]
|
|
105
|
+
#[test]
|
|
106
|
+
fn into_backend_io_hands_off_live_unix_socket() {
|
|
107
|
+
use std::os::unix::net::UnixStream;
|
|
108
|
+
|
|
109
|
+
let broker_socket = unique_socket_name("io-broker");
|
|
110
|
+
let backend_socket = unique_socket_name("io-backend");
|
|
111
|
+
|
|
112
|
+
let backend = spawn_raw_echo_backend(backend_socket.clone());
|
|
113
|
+
let broker = spawn_broker(broker_socket.clone(), backend_socket.clone());
|
|
114
|
+
|
|
115
|
+
let request = ConnectBackendRequest::new(&broker_socket, IO_SERVICE, IO_VERSION, IO_VERSION);
|
|
116
|
+
let session = BrokerSession::adopt(request).expect("broker session adopt");
|
|
117
|
+
assert_eq!(session.route(), BackendConnectionRoute::BrokerNegotiated);
|
|
118
|
+
assert_eq!(session.endpoint(), backend_socket);
|
|
119
|
+
|
|
120
|
+
let io = session.into_backend_io().expect("into_backend_io on unix");
|
|
121
|
+
let fd = io.into_owned_fd();
|
|
122
|
+
let mut raw = UnixStream::from(fd);
|
|
123
|
+
|
|
124
|
+
let proof = b"live-socket-proof";
|
|
125
|
+
raw.write_all(proof).expect("write over raw socket");
|
|
126
|
+
raw.flush().expect("flush");
|
|
127
|
+
let mut echoed = vec![0u8; proof.len()];
|
|
128
|
+
raw.read_exact(&mut echoed).expect("read raw echo");
|
|
129
|
+
assert_eq!(
|
|
130
|
+
&echoed, proof,
|
|
131
|
+
"raw socket must echo over the live connection"
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
drop(raw);
|
|
135
|
+
broker.join().unwrap().unwrap();
|
|
136
|
+
backend.join().unwrap().unwrap();
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
#[cfg(windows)]
|
|
140
|
+
#[test]
|
|
141
|
+
fn into_backend_io_is_unsupported_on_windows() {
|
|
142
|
+
use running_process::broker::adopt::IntoBackendIoError;
|
|
143
|
+
|
|
144
|
+
let broker_socket = unique_socket_name("io-broker-win");
|
|
145
|
+
let backend_socket = unique_socket_name("io-backend-win");
|
|
146
|
+
|
|
147
|
+
let backend = spawn_raw_echo_backend(backend_socket.clone());
|
|
148
|
+
let broker = spawn_broker(broker_socket.clone(), backend_socket.clone());
|
|
149
|
+
|
|
150
|
+
let request = ConnectBackendRequest::new(&broker_socket, IO_SERVICE, IO_VERSION, IO_VERSION);
|
|
151
|
+
let session = BrokerSession::adopt(request).expect("broker session adopt");
|
|
152
|
+
assert_eq!(session.route(), BackendConnectionRoute::BrokerNegotiated);
|
|
153
|
+
|
|
154
|
+
let err = session
|
|
155
|
+
.into_backend_io()
|
|
156
|
+
.expect_err("into_backend_io must be unsupported on Windows for now");
|
|
157
|
+
assert!(
|
|
158
|
+
matches!(err, IntoBackendIoError::WindowsUnsupported),
|
|
159
|
+
"expected WindowsUnsupported, got {err:?}"
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
broker.join().unwrap().unwrap();
|
|
163
|
+
backend.join().unwrap().unwrap();
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
#[cfg(all(unix, feature = "client-async"))]
|
|
167
|
+
#[test]
|
|
168
|
+
fn async_into_backend_io_hands_off_live_unix_socket() {
|
|
169
|
+
use std::os::unix::net::UnixStream;
|
|
170
|
+
|
|
171
|
+
let broker_socket = unique_socket_name("io-broker-async");
|
|
172
|
+
let backend_socket = unique_socket_name("io-backend-async");
|
|
173
|
+
|
|
174
|
+
let backend = spawn_raw_echo_backend(backend_socket.clone());
|
|
175
|
+
let broker = spawn_broker(broker_socket.clone(), backend_socket.clone());
|
|
176
|
+
|
|
177
|
+
let runtime = tokio::runtime::Builder::new_current_thread()
|
|
178
|
+
.enable_all()
|
|
179
|
+
.build()
|
|
180
|
+
.expect("tokio runtime");
|
|
181
|
+
let fd = runtime.block_on(async {
|
|
182
|
+
let request =
|
|
183
|
+
OwnedConnectRequest::new(broker_socket.clone(), IO_SERVICE, IO_VERSION, IO_VERSION);
|
|
184
|
+
let session = AsyncBrokerSession::adopt(request)
|
|
185
|
+
.await
|
|
186
|
+
.expect("async broker session adopt");
|
|
187
|
+
assert_eq!(session.route(), BackendConnectionRoute::BrokerNegotiated);
|
|
188
|
+
session
|
|
189
|
+
.into_backend_io()
|
|
190
|
+
.expect("async into_backend_io on unix")
|
|
191
|
+
.into_owned_fd()
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
let mut raw = UnixStream::from(fd);
|
|
195
|
+
let proof = b"async-live-socket-proof";
|
|
196
|
+
raw.write_all(proof).expect("write over raw socket");
|
|
197
|
+
raw.flush().expect("flush");
|
|
198
|
+
let mut echoed = vec![0u8; proof.len()];
|
|
199
|
+
raw.read_exact(&mut echoed).expect("read raw echo");
|
|
200
|
+
assert_eq!(
|
|
201
|
+
&echoed, proof,
|
|
202
|
+
"raw socket must echo over the live connection"
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
drop(raw);
|
|
206
|
+
broker.join().unwrap().unwrap();
|
|
207
|
+
backend.join().unwrap().unwrap();
|
|
208
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/proto/broker_v1/buf.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/bin/trampoline.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_handle.rs
RENAMED
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_lib/mod.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/mod.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/backend_sdk/mux.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/builders.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/capabilities.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/fs_health.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/host_identity.rs
RENAMED
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/mod.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/names.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/lifecycle/sid.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/manifest.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/secure_dir.rs
RENAMED
|
File without changes
|
{running_process-4.3.0 → running_process-4.4.0}/crates/running-process/src/broker/server/admin.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|