View Javadoc

    1   /*
    2    * Copyright 2012 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 org.jboss.netty.handler.codec.spdy;
    17
    18  import org.jboss.netty.buffer.ChannelBuffer;
    19  import org.jboss.netty.buffer.ChannelBuffers;
    20  import org.jboss.netty.util.internal.StringUtil;
    21
    22  /**
    23   * The default {@link SpdyDataFrame} implementation.
    24   */
    25  public class DefaultSpdyDataFrame implements SpdyDataFrame {
    26
    27      private int streamId;
    28      private boolean last;
    29      private boolean compressed;
    30      private ChannelBuffer data = ChannelBuffers.EMPTY_BUFFER;
    31
    32      /**
    33       * Creates a new instance.
    34       *
    35       * @param streamId the Stream-ID of this frame
    36       */
    37      public DefaultSpdyDataFrame(int streamId) {
    38          setStreamId(streamId);
    39      }
    40
    41      public int getStreamID() {
    42          return getStreamId();
    43      }
    44
    45      public int getStreamId() {
    46          return streamId;
    47      }
    48
    49      public void setStreamID(int streamId) {
    50          setStreamId(streamId);
    51      }
    52
    53      public void setStreamId(int streamId) {
    54          if (streamId <= 0) {
    55              throw new IllegalArgumentException(
    56                      "Stream-ID must be positive: " + streamId);
    57          }
    58          this.streamId = streamId;
    59      }
    60
    61      public boolean isLast() {
    62          return last;
    63      }
    64
    65      public void setLast(boolean last) {
    66          this.last = last;
    67      }
    68
    69      public boolean isCompressed() {
    70          return compressed;
    71      }
    72
    73      public void setCompressed(boolean compressed) {
    74          this.compressed = compressed;
    75      }
    76
    77      public ChannelBuffer getData() {
    78          return data;
    79      }
    80
    81      public void setData(ChannelBuffer data) {
    82          if (data == null) {
    83              data = ChannelBuffers.EMPTY_BUFFER;
    84          }
    85          if (data.readableBytes() > SpdyCodecUtil.SPDY_MAX_LENGTH) {
    86              throw new IllegalArgumentException("data payload cannot exceed "
    87                      + SpdyCodecUtil.SPDY_MAX_LENGTH + " bytes");
    88          }
    89          this.data = data;
    90      }
    91
    92      @Override
    93      public String toString() {
    94          StringBuilder buf = new StringBuilder();
    95          buf.append(getClass().getSimpleName());
    96          buf.append("(last: ");
    97          buf.append(isLast());
    98          buf.append("; compressed: ");
    99          buf.append(isCompressed());
    100         buf.append(')');
    101         buf.append(StringUtil.NEWLINE);
    102         buf.append("--> Stream-ID = ");
    103         buf.append(streamId);
    104         buf.append(StringUtil.NEWLINE);
    105         buf.append("--> Size = ");
    106         buf.append(data.readableBytes());
    107         return buf.toString();
    108     }
    109 }