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 org.jboss.netty.handler.codec.spdy;
17
18 import org.jboss.netty.util.internal.StringUtil;
19
20 /**
21 * The default {@link SpdyGoAwayFrame} implementation.
22 */
23 public class DefaultSpdyGoAwayFrame implements SpdyGoAwayFrame {
24
25 private int lastGoodStreamId;
26 private SpdySessionStatus status;
27
28 /**
29 * Creates a new instance.
30 *
31 * @param lastGoodStreamId the Last-good-stream-ID of this frame
32 */
33 public DefaultSpdyGoAwayFrame(int lastGoodStreamId) {
34 this(lastGoodStreamId, 0);
35 }
36
37 /**
38 * Creates a new instance.
39 *
40 * @param lastGoodStreamId the Last-good-stream-ID of this frame
41 * @param statusCode the Status code of this frame
42 */
43 public DefaultSpdyGoAwayFrame(int lastGoodStreamId, int statusCode) {
44 this(lastGoodStreamId, SpdySessionStatus.valueOf(statusCode));
45 }
46
47 /**
48 * Creates a new instance.
49 *
50 * @param lastGoodStreamId the Last-good-stream-ID of this frame
51 * @param status the status of this frame
52 */
53 public DefaultSpdyGoAwayFrame(int lastGoodStreamId, SpdySessionStatus status) {
54 setLastGoodStreamId(lastGoodStreamId);
55 setStatus(status);
56 }
57
58 public int getLastGoodStreamId() {
59 return lastGoodStreamId;
60 }
61
62 public void setLastGoodStreamId(int lastGoodStreamId) {
63 if (lastGoodStreamId < 0) {
64 throw new IllegalArgumentException("Last-good-stream-ID"
65 + " cannot be negative: " + lastGoodStreamId);
66 }
67 this.lastGoodStreamId = lastGoodStreamId;
68 }
69
70 public SpdySessionStatus getStatus() {
71 return status;
72 }
73
74 public void setStatus(SpdySessionStatus status) {
75 this.status = status;
76 }
77
78 @Override
79 public String toString() {
80 StringBuilder buf = new StringBuilder();
81 buf.append(getClass().getSimpleName());
82 buf.append(StringUtil.NEWLINE);
83 buf.append("--> Last-good-stream-ID = ");
84 buf.append(getLastGoodStreamId());
85 buf.append(StringUtil.NEWLINE);
86 buf.append("--> Status: ");
87 buf.append(getStatus().toString());
88 return buf.toString();
89 }
90 }