forked from 1b-agent/opencadstudio-upstream
ocs_doc_api: layer CRUD, per-curve layer assignment, XDATA/XRECORD support, and bulk SetXDataMany
This commit is contained in:
1 parent
b19992cbcb
commit
8bf5eac3fc
27 files changed
+3340
-181
No files matched your search
@@ -4,6 +4,12 @@
|
||||
`Transport::apply` carries one operation or a read-only query batch to the
|
||||
executor. The native adapter binds each request to its existing `HostSession`.
|
||||
|
||||
For out-of-process / worker-thread plugins, `doc_api_for_host(host)` constructs a
|
||||
`DocApi` backed by `OcsPluginApiIpc`, which sends `PluginRequest::DocApiRequest`
|
||||
through the host's `PluginRequestSender` and deserializes
|
||||
`PluginResponse::DocApiResponse`. This keeps plugin code free of manual envelope
|
||||
serialization while reusing the same executor that the in-process transport uses.
|
||||
|
||||
The executor validates inputs and dispatches through `DocApiBackend`. Backends
|
||||
must prepare fallible geometry and serialization before changing the document.
|
||||
Bulk writes prepare all entities, begin one undo record, apply the prepared
|
||||
@@ -22,14 +28,18 @@ do not reorder them. The consistency tests verify their bincode discriminants.
|
||||
generates the API reference and binding schema. The layout snapshot is curated
|
||||
vocabulary, not a reflected binary codec schema.
|
||||
|
||||
Layer CRUD is a document-table family, not an entity family. The API carries
|
||||
layer properties in the plain-data `LayerInfo` DTO and the host translates them
|
||||
to/from `acadrust::tables::Layer`. Layer names are case-insensitive. The host
|
||||
rejects duplicate names, deletion of layer "0" or the current layer, and removal
|
||||
of a layer that still has entities assigned.
|
||||
|
||||
XDATA and XRECORD are serialization roundtrip families: the API carries their
|
||||
payloads as plain-data DTOs and the host stores/retrieves them without semantic
|
||||
interpretation. XDATA records are keyed by registered application name on any
|
||||
entity; XRECORD objects are standalone named dictionaries of group-code/value
|
||||
entries. Both preserve exact bytes/values across save and reload.
|
||||
|
||||
To extend the API, update the DTO, backend, executor, facade and spec together,
|
||||
add a native behavior test, and rebuild the generated reference/schema. New
|
||||
backend methods must reject unsupported behavior explicitly.
|
||||
|
||||
Extension workflow:
|
||||
|
||||
1. Add the operation/query DTO and its name mapping, then update `spec/entities.toml`.
|
||||
2. Implement validation, backend preparation, executor dispatch and facade methods.
|
||||
3. Preserve each profile's plane and use cadkernel for geometry.
|
||||
4. Test native behavior, failed-operation atomicity and the binding transport payload.
|
||||
5. Run `cargo test -p ocs_doc_api --all-features` and rebuild the generated snapshots.
|
||||
Reference in new issue
Block a user