feat(call): implement CallConnection with imported-ops overlay and call/subscribe/abort (task: call/protocol/call-connection)
Implement CallConnection in protocol/connection.rs with Layer 2 imported-ops overlay (Arc<RwLock<HashMap>>), register_imported/register_imported_all, overlay_env() returning an OperationEnv that dispatches to imported ops, and call()/subscribe()/abort() methods that open a stream, send call.requested, register in PendingRequestMap, spawn a stream reader, and correlate responses by ID. Connection drop drops the overlay. Exposed MockConnection + Connection::from_mock in alknet-core for cross-crate testing. 9 new connection tests (102 total in alknet-call). Refs: docs/architecture/crates/call/call-protocol.md Implements: ADR-012, ADR-017, ADR-024
This commit is contained in:
@@ -199,30 +199,6 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
fn external_spec(name: &str, acl: AccessControl) -> OperationSpec {
|
||||
OperationSpec::new(
|
||||
name,
|
||||
OperationType::Query,
|
||||
Visibility::External,
|
||||
serde_json::json!({}),
|
||||
serde_json::json!({}),
|
||||
vec![],
|
||||
acl,
|
||||
)
|
||||
}
|
||||
|
||||
fn internal_spec(name: &str, acl: AccessControl) -> OperationSpec {
|
||||
OperationSpec::new(
|
||||
name,
|
||||
OperationType::Query,
|
||||
Visibility::Internal,
|
||||
serde_json::json!({}),
|
||||
serde_json::json!({}),
|
||||
vec![],
|
||||
acl,
|
||||
)
|
||||
}
|
||||
|
||||
fn echo_handler() -> crate::registry::registration::Handler {
|
||||
make_handler(
|
||||
|input, context| async move { ResponseEnvelope::ok(context.request_id, input) },
|
||||
|
||||
Reference in New Issue
Block a user