PacketChannelWindowAdjust.java revision 48ded2421114c4c87ef3f8005c9f793a5d077cbd
1/*
2 * Copyright (c) 2006-2011 Christian Plattner. All rights reserved.
3 * Please refer to the LICENSE.txt for licensing details.
4 */
5package ch.ethz.ssh2.packets;
6
7import java.io.IOException;
8
9/**
10 * PacketChannelWindowAdjust.
11 *
12 * @author Christian Plattner
13 * @version 2.50, 03/15/10
14 */
15public class PacketChannelWindowAdjust
16{
17	byte[] payload;
18
19	public int recipientChannelID;
20	public int windowChange;
21
22	public PacketChannelWindowAdjust(int recipientChannelID, int windowChange)
23	{
24		this.recipientChannelID = recipientChannelID;
25		this.windowChange = windowChange;
26	}
27
28	public PacketChannelWindowAdjust(byte payload[], int off, int len) throws IOException
29	{
30		this.payload = new byte[len];
31		System.arraycopy(payload, off, this.payload, 0, len);
32
33		TypesReader tr = new TypesReader(payload, off, len);
34
35		int packet_type = tr.readByte();
36
37		if (packet_type != Packets.SSH_MSG_CHANNEL_WINDOW_ADJUST)
38			throw new IOException(
39					"This is not a SSH_MSG_CHANNEL_WINDOW_ADJUST! ("
40							+ packet_type + ")");
41
42		recipientChannelID = tr.readUINT32();
43		windowChange = tr.readUINT32();
44
45		if (tr.remain() != 0)
46			throw new IOException("Padding in SSH_MSG_CHANNEL_WINDOW_ADJUST packet!");
47	}
48
49	public byte[] getPayload()
50	{
51		if (payload == null)
52		{
53			TypesWriter tw = new TypesWriter();
54			tw.writeByte(Packets.SSH_MSG_CHANNEL_WINDOW_ADJUST);
55			tw.writeUINT32(recipientChannelID);
56			tw.writeUINT32(windowChange);
57			payload = tw.getBytes();
58		}
59		return payload;
60	}
61}
62