View Javadoc
1   /*
2    * Copyright 2013 The Netty Project
3    *
4    * The Netty Project licenses this file to you under the Apache License,
5    * version 2.0 (the "License"); you may not use this file except in compliance
6    * with the License. You may obtain a copy of the License at:
7    *
8    *   http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations
14   * under the License.
15   */
16  package io.netty.handler.codec.memcache.binary;
17  
18  import io.netty.buffer.ByteBuf;
19  import io.netty.buffer.Unpooled;
20  
21  /**
22   * The decoder which takes care of decoding the response headers.
23   */
24  public class BinaryMemcacheResponseDecoder
25      extends AbstractBinaryMemcacheDecoder<BinaryMemcacheResponse> {
26  
27      public BinaryMemcacheResponseDecoder() {
28          this(DEFAULT_MAX_CHUNK_SIZE);
29      }
30  
31      public BinaryMemcacheResponseDecoder(int chunkSize) {
32          super(chunkSize);
33      }
34  
35      @Override
36      protected BinaryMemcacheResponse decodeHeader(ByteBuf in) {
37          BinaryMemcacheResponse header = new DefaultBinaryMemcacheResponse();
38          header.setMagic(in.readByte());
39          header.setOpcode(in.readByte());
40          header.setKeyLength(in.readShort());
41          header.setExtrasLength(in.readByte());
42          header.setDataType(in.readByte());
43          header.setStatus(in.readShort());
44          header.setTotalBodyLength(in.readInt());
45          header.setOpaque(in.readInt());
46          header.setCas(in.readLong());
47          return header;
48      }
49  
50      @Override
51      protected BinaryMemcacheResponse buildInvalidMessage() {
52          return new DefaultBinaryMemcacheResponse("", Unpooled.EMPTY_BUFFER);
53      }
54  }