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);
                    }
                }
            }
        }
Exemple #2
0
        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);
                    }
                }
            }
        }