Package com.fineqt.fpb.lib.api

Examples of com.fineqt.fpb.lib.api.IContainerValue


                updateContentLength(value);
            }
        }

        private void updateContentLength(PValue value) {
            IContainerValue msgValue = (IContainerValue)value;
            //取得Content-Length首部字段
            @SuppressWarnings("unchecked")
            IListValue<IRecordSetValue> headers = (IListValue<IRecordSetValue>)
                    msgValue.getField(HTTP_MESSAGE__HEADERS);
            IValue contentLengthValue = null;
            if (headers != null) {
                for (int i = 0; i < headers.getLength(); i++) {
                    IRecordSetValue header = headers.getItem(i);
                    if (header == null) {
                        continue;                           
                    }
                    IValue name = header.getField(HTTP_HEADER__NAME);
                    if (name == null) {
                        continue;
                    }
                    if (HeaderNames.CONTENT_LENGTH.equals(name.getText())) {
                        contentLengthValue = header.getField(HTTP_HEADER__VALUE);
                    }
                }
            }
            //根据httpBody/data来更新
            if (contentLengthValue != null) {
                IContainerValue httpBody = (IContainerValue)msgValue.getField(
                        HTTP_MESSAGE__HTTP_BODY);
                if (httpBody != null && !httpBody.notPresent()) {
                    IOctetstringValue data = (IOctetstringValue)httpBody.getField(
                            HTTP_BODY__DATA);
                    if (data != null) {
                        String text = Integer.toString(data.getLength());
                        contentLengthValue.setText(text);
                    }
View Full Code Here


                updateChunkLength(value);
            }
        }

        private void updateChunkLength(PValue value) {
            IContainerValue chunkValue = (IContainerValue)value;
            //取得chunkLength字段
            IValue chunkLength = null;
            IContainerValue lengthLine = (IContainerValue)chunkValue.getField(
                    HTTP_CHUNK__LENGTH_LINE);
            if (lengthLine != null) {
                chunkLength = lengthLine.getField(HTTP_CHUNK_LENGTH_LINE__CHUNK_LENGTH);
            }
            //根据chunkData/data来更新
            if (chunkLength != null) {
                IContainerValue chunkData = (IContainerValue)chunkValue.getField(
                        HTTP_CHUNK__CHUNK_DATA);
                //默认为0
                String text = "0";
                if (chunkData != null && !chunkData.notPresent()) {
                    IOctetstringValue data = (IOctetstringValue)chunkData.getField(
                            HTTP_CHUNK_DATA__DATA);
                    if (data != null) {
                        text = Integer.toString(data.getLength());
                    }
                }
View Full Code Here

                DecodeResult fieldResult, PFieldExt fieldMeta) throws DecodeException {
            boolean ret = super.postDecodeField(cxt, input, paras, parentResult,
                    fieldResult, fieldMeta);
            if (fieldMeta.getFieldID() == HTTP_CHUNK__LENGTH_LINE) {
                IFactory factory = getPModule().getFactory();
                IContainerValue lengthLine = (IContainerValue)fieldResult.getValue();
                if (lengthLine != null) {
                    ICharstringValue lenValue = (ICharstringValue)lengthLine.getField(
                            HTTP_CHUNK_LENGTH_LINE__CHUNK_LENGTH);
                    IBooleanValue chunked = factory.createBoolean();
                    if (lenValue != null && !lenValue.getText().equals("0")){
                        //hasChunkData
                        chunked.setBoolean(true);
View Full Code Here

        protected DecodeResult postDecode(DecodeContext cxt, IReadableBitBuffer input,
                DecodeParameters paras, DecodeResult result) throws DecodeException {
            DecodeResult ret = super.postDecode(cxt, input, paras, result);
            if (ret.getValue() != null) {
                //设置chunkLength
                IContainerValue value = (IContainerValue)ret.getValue();
                IValue lenValue = value.getField(HTTP_CHUNK_LENGTH_LINE__CHUNK_LENGTH);
                IIntegerValue intValue = (IIntegerValue)cxt.getFieldStackMap().peekField(
                        StackFields.CHUNK_LENGTH);
                if (intValue == null) {
                    intValue = getPModule().getFactory().createInteger();
                    cxt.getFieldStackMap().setTopField(StackFields.CHUNK_LENGTH, intValue);
View Full Code Here

TOP

Related Classes of com.fineqt.fpb.lib.api.IContainerValue

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.