AsyncWeb原理分析(七)——response

12 篇文章 0 订阅

thomescai http://blog.csdn.net/thomescai(转载请保留)

 概要:本文主要讲解response的传递和编码。

request流程:

    request的解码在HttpRequestDecoder的decode()中详见:《AsyncWeb原理分析(五)——request的封装

response流程:


    request过程中,Filter间通过messageReceived()进行传递。

  @Override
        public void messageReceived( final NextFilter nextFilter,
                                     final IoSession session, final Object message ) throws Exception
   reponse过程中,Filter间通过filterWrite()进行传递,传递对象通过writeRequest.getMessage()获取。注意, 传递递顺序和request的相反

  @Override
        public void filterWrite( final NextFilter nextFilter, final IoSession session, final WriteRequest writeRequest )
                throws Exception
    最终在 HttpResponseEncoder 中的encode()进行解析:

public class HttpResponseEncoder implements ProtocolEncoder {

    public void encode(IoSession session, Object message,
            ProtocolEncoderOutput out) throws Exception {
        asciiEncoder.reset();
        HttpResponse response = (HttpResponse) message;
        IoBuffer buffer = IoBuffer.allocate(512);
        buffer.setAutoExpand(true);

        encodeStatusLine(response, buffer);
        HttpCodecUtils.encodeHeaders(response, buffer, asciiEncoder);
        HttpCodecUtils.encodeBody(response, buffer);

        buffer.flip();
        out.write(buffer);
    }
总结:到此,asyncweb的整体流程可以算通了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值