Commit 44bab19
committed
fix(gateway): forward remote-entity writes; harden DTO request/response contract
Aggregation forwarding only proxied GET and SSE: the typed body, alternates,
delete-alternates, multipart, and binary wrappers never installed the
ForwardResponseScope, so writes and uploads to a remote entity returned an
empty no-op response instead of the peer's. Install the scope uniformly in
every wrapper (matching the documented "around every typed handler invocation"
invariant) and add forwarding regression tests for PUT, POST-alternates,
DELETE-alternates, and multipart routes.
Tighten the DTO contract:
- JsonReader treats an explicit JSON null as a value for free-form json and
optional<json> members, so PUT data/configurations with {"data": null} no
longer returns 400; null on other member types is still treated as absent.
- ScriptControlRequest.action uses plain field() instead of field_enum so
plugin script backends may accept actions beyond the built-in
stop/forced_termination; the provider validates the value.
- Restore the FaultListItem.severity_label response enum (now including
UNKNOWN, which fault_to_json emits for out-of-range severities) and pin
fault_to_json output to the FaultListItem schema with a round-trip test, so
the verbatim fault-list wire cannot drift from its published schema.
- JsonWriter's value encoder ends in a static_assert like the reader and schema
visitors, so an unsupported field type fails to compile instead of silently
taking the scalar branch.
- Drop a no-op multipart parts initialization.
Document the synchronous operation service-call failure error-envelope
normalization and the fan-out re-serialization semantics in the changelog.1 parent a17938c commit 44bab19
12 files changed
Lines changed: 362 additions & 25 deletions
File tree
- src/ros2_medkit_gateway
- include/ros2_medkit_gateway/dto
- src
- core/openapi
- openapi
- test
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
51 | 62 | | |
52 | 63 | | |
53 | 64 | | |
54 | 65 | | |
55 | 66 | | |
56 | 67 | | |
57 | | - | |
| 68 | + | |
58 | 69 | | |
59 | 70 | | |
60 | 71 | | |
| |||
Lines changed: 4 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
26 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
53 | 55 | | |
54 | 56 | | |
55 | 57 | | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | 58 | | |
60 | 59 | | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
| 65 | + | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| |||
Lines changed: 14 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
136 | | - | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
137 | 150 | | |
138 | 151 | | |
139 | 152 | | |
| |||
Lines changed: 7 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
50 | 56 | | |
51 | 57 | | |
52 | 58 | | |
| |||
Lines changed: 11 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
27 | 26 | | |
28 | 27 | | |
29 | 28 | | |
| |||
193 | 192 | | |
194 | 193 | | |
195 | 194 | | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | | - | |
200 | | - | |
201 | | - | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
202 | 204 | | |
203 | 205 | | |
204 | | - | |
| 206 | + | |
205 | 207 | | |
206 | 208 | | |
207 | 209 | | |
208 | 210 | | |
209 | | - | |
| 211 | + | |
210 | 212 | | |
211 | 213 | | |
212 | 214 | | |
| |||
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
270 | 273 | | |
271 | 274 | | |
272 | 275 | | |
| |||
302 | 305 | | |
303 | 306 | | |
304 | 307 | | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
305 | 311 | | |
306 | 312 | | |
307 | 313 | | |
| |||
326 | 332 | | |
327 | 333 | | |
328 | 334 | | |
| 335 | + | |
| 336 | + | |
329 | 337 | | |
330 | 338 | | |
331 | 339 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
556 | 556 | | |
557 | 557 | | |
558 | 558 | | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
559 | 564 | | |
560 | 565 | | |
561 | 566 | | |
| |||
577 | 582 | | |
578 | 583 | | |
579 | 584 | | |
| 585 | + | |
| 586 | + | |
580 | 587 | | |
581 | 588 | | |
582 | 589 | | |
| |||
601 | 608 | | |
602 | 609 | | |
603 | 610 | | |
| 611 | + | |
| 612 | + | |
604 | 613 | | |
605 | 614 | | |
606 | 615 | | |
| |||
629 | 638 | | |
630 | 639 | | |
631 | 640 | | |
| 641 | + | |
| 642 | + | |
632 | 643 | | |
633 | 644 | | |
634 | 645 | | |
| |||
659 | 670 | | |
660 | 671 | | |
661 | 672 | | |
| 673 | + | |
| 674 | + | |
662 | 675 | | |
663 | 676 | | |
664 | 677 | | |
| |||
980 | 993 | | |
981 | 994 | | |
982 | 995 | | |
| 996 | + | |
| 997 | + | |
983 | 998 | | |
984 | | - | |
| 999 | + | |
985 | 1000 | | |
986 | 1001 | | |
987 | 1002 | | |
| |||
0 commit comments