addEmbeddingHandoverService method

void addEmbeddingHandoverService(
  1. Service service
)

Implementation

void addEmbeddingHandoverService(Service service) {
  embeddingChannel.on(service.$name, (args) async {
    final serviceMethod = service.$lookupMethod(args['method'] as String);
    final request = serviceMethod!.requestDeserializer(args['request'] as List<int>);
    print('request: $request');
    print('request type: ${request.runtimeType}');
    // Create a properly typed stream using createRequestStream()
    // This preserves the generic type from ServiceMethod<Q, R>
    final sourceStream = Stream.value(request);
    final subscription = sourceStream.listen(null);
    final controller = serviceMethod.createRequestStream(subscription);
    controller.add(request);
    controller.close();

    // Call handle with the properly typed stream
    final response = await serviceMethod.handle(DummyServiceCall(), controller.stream, []).first;
    print('response: $response');
    final bytes = (response as GeneratedMessage).writeToBuffer();
    return bytes;
  });
}