Package net.hasor.rsf.protocol.block

Examples of net.hasor.rsf.protocol.block.RequestSocketBlock


        //* byte[1]  keepData                             保留区
        buf.skipBytes(1);
        //* byte[3]  contentLength                        内容大小
        buf.skipBytes(3);//.readUnsignedMedium()
        //
        RequestSocketBlock req = new RequestSocketBlock();
        req.setVersion(version);
        req.setRequestID(requestID);
        //* --------------------------------------------------------bytes =14
        //* byte[2]  servicesName-(attr-index)            远程服务名
        req.setServiceName(buf.readShort());
        //* byte[2]  servicesGroup-(attr-index)           远程服务分组
        req.setServiceGroup(buf.readShort());
        //* byte[2]  servicesVersion-(attr-index)         远程服务版本
        req.setServiceVersion(buf.readShort());
        //* byte[2]  servicesMethod-(attr-index)          远程服务方法名
        req.setTargetMethod(buf.readShort());
        //* byte[2]  serializeType-(attr-index)           序列化策略
        req.setSerializeType(buf.readShort());
        //* byte[4]  clientTimeout                        远程客户端超时时间
        req.setClientTimeout(buf.readInt());
        //* --------------------------------------------------------bytes =1 ~ 1021
        //* byte[1]  paramCount                           参数总数
        byte paramCount = buf.readByte();
        for (int i = 0; i < paramCount; i++) {
            //* byte[4]  ptype-0-(attr-index,attr-index)  参数类型
            int mergeData = buf.readInt();
            req.addParameter(mergeData);
        }
        //* --------------------------------------------------------bytes =1 ~ 1021
        //* byte[1]  optionCount                          选项参数总数
        byte optionCount = buf.readByte();
        for (int i = 0; i < optionCount; i++) {
            //* byte[4]  attr-0-(attr-index,attr-index)   选项参数
            int mergeData = buf.readInt();
            req.addOption(mergeData);
        }
        //* --------------------------------------------------------bytes =6 ~ 8192
        //* byte[2]  attrPool-size (Max = 2047)           池大小
        short attrPoolSize = buf.readShort();
        for (int i = 0; i < attrPoolSize; i++) {
            //* byte[4] att-length                        属性1大小
            int length = buf.readInt();
            req.addPoolData(length);
        }
        //* --------------------------------------------------------bytes =n
        //* dataBody                                      数据内容
        req.fillFrom(buf.readBytes(req.getPoolSize()));
        return req;
    }
View Full Code Here


* @author 赵永春(zyc@hasor.net)
*/
public class TransferUtils {
    /**将{@link RequestMsg}转换为{@link RequestSocketBlock}消息。*/
    public static RequestSocketBlock requestToBlock(RequestMsg msg) {
        RequestSocketBlock socketMsg = new RequestSocketBlock();
        //1.基本信息
        byte version = (byte) (RSFConstants.RSF_Request | msg.getVersion());
        socketMsg.setVersion(version);//协议版本
        socketMsg.setRequestID(msg.getRequestID());//请求ID
        socketMsg.setServiceName(pushString(socketMsg, msg.getServiceName()));//服务名
        socketMsg.setServiceVersion(pushString(socketMsg, msg.getServiceVersion()));//服务版本
        socketMsg.setServiceGroup(pushString(socketMsg, msg.getServiceGroup()));//服务分组
        socketMsg.setTargetMethod(pushString(socketMsg, msg.getTargetMethod()));//远程服务方法
        socketMsg.setSerializeType(pushString(socketMsg, msg.getSerializeType()));//序列化策略
        socketMsg.setClientTimeout(msg.getClientTimeout());//远程客户端超时时间
        //2.调用参数
        int pCount = msg.getParameterCount();
        for (int i = 0; i < pCount; i++) {
            String pType = msg.getParameterType(i);
            byte[] pData = msg.getParameterValue(i);
            socketMsg.addParameter(pushString(socketMsg, pType), socketMsg.pushData(pData));
        }
        //3.Opt参数
        String[] optKeys = msg.getOptionKeys();
        for (int i = 0; i < optKeys.length; i++) {
            socketMsg.addOption(//
                    pushString(socketMsg, optKeys[i]), pushString(socketMsg, msg.getOption(optKeys[i])));
        }
        return socketMsg;
    };
View Full Code Here

        ProtocolType pType = ProtocolType.valueOf(version);
        if (pType == ProtocolType.Request) {
            //request
            Protocol<RequestSocketBlock> requestProtocol = ProtocolUtils.requestProtocol(version);
            if (requestProtocol != null) {
                RequestSocketBlock block = requestProtocol.decode(frame);
                RequestMsg reqMetaData = TransferUtils.requestToMessage(block);
                ctx.fireChannelRead(reqMetaData);
                return null;/*正常处理后返回*/
            }
        }
View Full Code Here

            msg = TransferUtils.responseToBlock((ResponseMsg) msg);//response
        }
        //
        //2.SocketBlock 转换 ByteBuf
        if (msg instanceof RequestSocketBlock) {
            RequestSocketBlock request = (RequestSocketBlock) msg;
            Protocol<RequestSocketBlock> requestProtocol = ProtocolUtils.requestProtocol(request.getVersion());
            requestProtocol.encode((RequestSocketBlock) msg, out);//request
        }
        if (msg instanceof ResponseSocketBlock) {
            ResponseSocketBlock response = (ResponseSocketBlock) msg;
            Protocol<ResponseSocketBlock> responseProtocol = ProtocolUtils.responseProtocol(response.getVersion());
View Full Code Here

TOP

Related Classes of net.hasor.rsf.protocol.block.RequestSocketBlock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.