import 'dart:core';

import 'package:fis_jsonrpc/client_base.dart';
import 'package:fis_common/json_convert.dart';

import 'wingRtc.m.dart';


class WingRtcService extends JsonRpcClientBase {
	WingRtcService(
		String host, {
		String serviceName = "IWingRtcService",
		Map<String, String>? headers,
		int? timeout,
	}) : super(
						host,
						serviceName,
						headers: headers,
						timeout: timeout,
				) {
		/// 注册响应实体反序列化处理器
		FJsonConvert.setDecoder((map) => GetRoomIdResult.fromJson(map));
		FJsonConvert.setDecoder((map) => GenerateRoomUrlResult.fromJson(map));
		FJsonConvert.setDecoder((map) => GetRtcSettingResult.fromJson(map));
		FJsonConvert.setDecoder((map) => GetUserSignResult.fromJson(map));
	}

	Future<GetRoomIdResult> getRoomIdAsync(GetRoomIdRequest request) async {
		var rpcRst = await call("GetRoomIdAsync", request);
		var result = GetRoomIdResult.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

	Future<GenerateRoomUrlResult> generateRoomUrlAsync(GenerateRoomUrlRequest request) async {
		var rpcRst = await call("GenerateRoomUrlAsync", request);
		var result = GenerateRoomUrlResult.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

	Future<GetRtcSettingResult> getRtcSettingAsync(GetRtcSettingRequest request) async {
		var rpcRst = await call("GetRtcSettingAsync", request);
		var result = GetRtcSettingResult.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

	Future<GetUserSignResult> getUserSignAsync(GetUserSignRequest request) async {
		var rpcRst = await call("GetUserSignAsync", request);
		var result = GetUserSignResult.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

}