美文网首页
hsf笔记-Invocation

hsf笔记-Invocation

作者: 兴浩 | 来源:发表于2018-11-23 22:39 被阅读6次

Invocation是远程调用过程的抽象类,了解其数据结构很有必要

1.总体属性概览

1.1 Invocation的构建

以客户端调用为例,使用ConsumerMethodModel作为参数进行赋值

    public static Invocation buildInvocation(ConsumerMethodModel methodModel, Object... args) {
        String serviceUniqueName = methodModel.getUniqueName();
        String methodName = methodModel.getMethodName();
        args = null == args ? new Object[0] : args;
        String[] parameterTypes = methodModel.getParameterTypes();
        Invocation invocation = new Invocation();
        invocation.setTargetServiceUniqueName(serviceUniqueName);
        invocation.setMethodName(methodName);
        invocation.setMethodArgSigs(parameterTypes);
        invocation.setMethodArgs(args);
        invocation.setReturnClass(methodModel.getReturnClass());
        invocation.setParameterClasses(methodModel.getParameterClasses());
        invocation.getClientInvocationContext().setMethodModel(methodModel);
        return invocation;
    }

1.2 HSFRequest

Invocation大部分属性的赋值都是HSFRequest对象的代理

    public byte getSerializeType() {
        return this.hsfRequest.getSerializeType();
    }

    public void setSerializeType(byte serializeType) {
        this.hsfRequest.setSerializeType(serializeType);
    }

    public String getTargetServiceUniqueName() {
        return this.hsfRequest.getTargetServiceUniqueName();
    }

    public void setTargetServiceUniqueName(String targetServiceUniqueName) {
        this.hsfRequest.setTargetServiceUniqueName(targetServiceUniqueName);
    }
//...

1.3 ClientInvocationContext

Client端远程调用上下文,将ConsumerMethodModel作为变量传入作为上下参数

    public static class ClientInvocationContext {
        private ConsumerMethodModel methodModel;

        public ClientInvocationContext() {
        }

        public ConsumerMethodModel getMethodModel() {
            return this.methodModel;
        }

        public void setMethodModel(ConsumerMethodModel methodModel) {
            this.methodModel = methodModel;
        }

        public boolean isConsistentEnable() {
            ServiceMetadata metadata = this.methodModel.getMetadata();
            if (metadata == null) {
                return false;
            } else {
                String consistent = metadata.getConsistent();
                return null != consistent && !consistent.equals(Boolean.FALSE.toString());
            }
        }
    }

相关文章

网友评论

      本文标题:hsf笔记-Invocation

      本文链接:https://www.haomeiwen.com/subject/sxdgbftx.html