|
| 1 | +import 'package:fixnum/fixnum.dart'; |
| 2 | +import 'package:grpc/grpc_connection_interface.dart'; |
| 3 | +import 'package:uuid/uuid.dart'; |
| 4 | + |
| 5 | +import '../../gen/common/v1/common.pb.dart'; |
| 6 | +import '../../gen/component/audioin/v1/audioin.pbgrpc.dart'; |
| 7 | +import '../../gen/google/protobuf/struct.pb.dart'; |
| 8 | +import '../../resource/base.dart'; |
| 9 | +import '../../utils.dart'; |
| 10 | +import 'audio_in.dart'; |
| 11 | + |
| 12 | +/// gRPC client for the [AudioIn] component. |
| 13 | +class AudioInClient extends AudioIn implements ResourceRPCClient { |
| 14 | + @override |
| 15 | + String name; |
| 16 | + |
| 17 | + @override |
| 18 | + ClientChannelBase channel; |
| 19 | + |
| 20 | + @override |
| 21 | + AudioInServiceClient get client => AudioInServiceClient(channel); |
| 22 | + |
| 23 | + AudioInClient(this.name, this.channel); |
| 24 | + |
| 25 | + @override |
| 26 | + Stream<GetAudioResponse> getAudio({ |
| 27 | + required String codec, |
| 28 | + double? durationSeconds, |
| 29 | + Int64? previousTimestampNanoseconds, |
| 30 | + Map<String, dynamic>? extra, |
| 31 | + }) { |
| 32 | + final uuid = Uuid(); |
| 33 | + final request = GetAudioRequest() |
| 34 | + ..name = name |
| 35 | + ..codec = codec |
| 36 | + ..requestId = uuid.v4(); |
| 37 | + if (durationSeconds != null) { |
| 38 | + request.durationSeconds = durationSeconds; |
| 39 | + } |
| 40 | + if (previousTimestampNanoseconds != null) { |
| 41 | + request.previousTimestampNanoseconds = previousTimestampNanoseconds; |
| 42 | + } |
| 43 | + if (extra != null) { |
| 44 | + request.extra = extra.toStruct(); |
| 45 | + } |
| 46 | + return client.getAudio(request); |
| 47 | + } |
| 48 | + |
| 49 | + @override |
| 50 | + Future<GetPropertiesResponse> getProperties({Map<String, dynamic>? extra}) async { |
| 51 | + final request = GetPropertiesRequest() |
| 52 | + ..name = name |
| 53 | + ..extra = extra?.toStruct() ?? Struct(); |
| 54 | + return await client.getProperties(request); |
| 55 | + } |
| 56 | + |
| 57 | + @override |
| 58 | + Future<Map<String, dynamic>> doCommand(Map<String, dynamic> command) async { |
| 59 | + final request = DoCommandRequest() |
| 60 | + ..name = name |
| 61 | + ..command = command.toStruct(); |
| 62 | + final response = await client.doCommand(request); |
| 63 | + return response.result.toMap(); |
| 64 | + } |
| 65 | +} |
0 commit comments