void HandleServiceMethod(IPacketMsg packetMsg) { var notification = new ClientMsgProtobuf(packetMsg); var jobName = notification.Header.Proto.target_job_name; if (!string.IsNullOrEmpty(jobName)) { var splitByDot = jobName.Split('.'); var splitByHash = splitByDot[1].Split('#'); var serviceName = splitByDot[0]; var methodName = splitByHash[0]; var serviceInterfaceName = "SteamKit2.Unified.Internal.I" + serviceName; var serviceInterfaceType = Type.GetType(serviceInterfaceName); if (serviceInterfaceType != null) { var method = serviceInterfaceType.GetMethod(methodName); if (method != null) { var argumentType = method.GetParameters().Single().ParameterType; var callback = new ServiceMethodNotification(argumentType, packetMsg); Client.PostCallback(callback); } } } }
void HandleServiceMethod(IPacketMsg packetMsg) { if (!(packetMsg is PacketClientMsgProtobuf packetMsgProto)) { throw new InvalidDataException("Packet message is expected to be protobuf."); } var jobName = packetMsgProto.Header.Proto.target_job_name; if (!string.IsNullOrEmpty(jobName)) { var splitByDot = jobName.Split('.'); var splitByHash = splitByDot[1].Split('#'); var serviceName = splitByDot[0]; var methodName = splitByHash[0]; var serviceInterfaceName = "SteamKit2.Internal.I" + serviceName; var serviceInterfaceType = Type.GetType(serviceInterfaceName); if (serviceInterfaceType != null) { var method = serviceInterfaceType.GetMethod(methodName); if (method != null) { var argumentType = method.GetParameters().Single().ParameterType; var callback = new ServiceMethodNotification(argumentType, packetMsg); Client.PostCallback(callback); } } } }