Milestone 2
This commit is contained in:
parent
14e3afdd7b
commit
866f0419ad
19 changed files with 2006 additions and 23 deletions
53
docs/milestone-0.md
Normal file
53
docs/milestone-0.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Milestone 0 - Foundation
|
||||
|
||||
## Build system
|
||||
|
||||
- CMake 3.20+
|
||||
- C++17
|
||||
- pkg-config
|
||||
- libpipewire-0.3 development files
|
||||
|
||||
## Public API surface
|
||||
|
||||
- Namespace: warppipe
|
||||
- Core types: Status, StatusCode, Result<T>
|
||||
- Threading: ThreadingMode (caller thread or managed thread loop)
|
||||
- Primary entry: Client
|
||||
- Handles: NodeId, PortId, LinkId, RuleId
|
||||
- Data shapes: NodeInfo, PortInfo, VirtualSink, VirtualSource, Link, RouteRule
|
||||
|
||||
## Error model
|
||||
|
||||
- StatusCode enum with explicit categories (ok, invalid argument, not found, unavailable, permission denied, timeout, internal, not implemented)
|
||||
- Status carries code + message; Result<T> pairs Status with value
|
||||
|
||||
## Threading model
|
||||
|
||||
- Default: managed thread loop owned by Client
|
||||
- Optional: caller thread loop for embedding in existing event loop
|
||||
|
||||
## Performance budget and metrics
|
||||
|
||||
- Target: 200 create/modify/delete operations in under 1 second on a warm PipeWire connection
|
||||
- Target per operation: median < 2 ms, p95 < 10 ms for create or delete
|
||||
- Track metrics for: create virtual sink/source, create link, delete link
|
||||
|
||||
## Ephemeral source identity strategy
|
||||
|
||||
- Match priority: application.name, application.process.binary, media.role, node.name
|
||||
- Fallback: client properties and media class
|
||||
- Avoid serial IDs or object IDs for persistence
|
||||
- Rule matching is stable across restarts and reconnects
|
||||
|
||||
## Tests to add (Milestone 0)
|
||||
|
||||
- Missing PipeWire daemon: Client::Create returns StatusCode::kUnavailable
|
||||
- Missing link-factory module: CreateLink returns StatusCode::kUnavailable
|
||||
- Missing metadata module: SaveConfig or policy init returns StatusCode::kUnavailable
|
||||
- Invalid media class in virtual node creation: returns StatusCode::kInvalidArgument
|
||||
|
||||
## Performance tests (Milestone 0)
|
||||
|
||||
- Microbenchmark harness that measures connect -> create N -> destroy N
|
||||
- Baseline: N=200 with subsecond wall time on a warm PipeWire connection
|
||||
- Record median and p95 latency per operation
|
||||
Loading…
Add table
Add a link
Reference in a new issue