1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package uk.ac.rdg.resc.jstyx.messages;
30
31 import uk.ac.rdg.resc.jstyx.StyxUtils;
32
33 /***
34 * Message returned by the server in response to a TversionMessage
35 *
36 * @author Jon Blower
37 * $Revision: 146 $
38 * $Date: 2005-03-15 09:01:48 +0000 (Tue, 15 Mar 2005) $
39 * $Log$
40 * Revision 1.4 2005/03/15 09:01:48 jonblower
41 * Message type now stored as short, not int
42 *
43 * Revision 1.3 2005/03/11 14:02:15 jonblower
44 * Merged MINA-Test_20059309 into main line of development
45 *
46 * Revision 1.2.2.1 2005/03/10 11:50:59 jonblower
47 * Changed to fit with MINA framework
48 *
49 * Revision 1.1 2005/03/09 16:58:42 jonblower
50 * Changes to MINA-related classes
51 *
52 * Revision 1.2 2005/02/24 07:44:43 jonblower
53 * Added getFriendlyString()
54 *
55 * Revision 1.1.1.1 2005/02/16 18:58:28 jonblower
56 * Initial import
57 *
58 */
59 public class RversionMessage extends StyxMessage
60 {
61
62 private long maxMessageSize;
63
64 private String version;
65
66 /***
67 * Creates a new RversionMessage
68 * @param length The total length of the message (including all header info)
69 * @param type The type of the message (a number between 100 and 127)
70 * @param tag The tag that identifies this message
71 */
72 public RversionMessage(int length, short type, int tag)
73 {
74 super(length, type, tag);
75 this.name = "Rversion";
76 }
77
78 public RversionMessage(long maxMessageSize, String version)
79 {
80 this(0, (short)101, 0);
81 this.maxMessageSize = maxMessageSize;
82 this.setVersion(version);
83 }
84
85 protected final void decodeBody(StyxBuffer styxBuf)
86 {
87
88 this.maxMessageSize = styxBuf.getUInt();
89
90 this.version = styxBuf.getString();
91 }
92
93 protected final void encodeBody(StyxBuffer styxBuf)
94 {
95
96 styxBuf.putUInt(this.maxMessageSize).putString(this.version);
97 }
98
99 /***
100 * @return The maximum size of a message that will be sent on this
101 * connection by either party
102 */
103 public long getMaxMessageSize()
104 {
105 return this.maxMessageSize;
106 }
107
108 /***
109 * @param maxMessageSize The maximum size of a message that will be sent on this
110 * connection by either party
111 */
112 public void setMaxMessageSize(long maxMessageSize)
113 {
114 this.maxMessageSize = maxMessageSize;
115 }
116
117 /***
118 * @return The version string (normally "9P2000")
119 */
120 public String getVersion()
121 {
122 return this.version;
123 }
124
125 /***
126 * @param version The version string (normally "9P2000")
127 */
128 public void setVersion(String version)
129 {
130 this.version = version;
131 int versionLen = StyxUtils.strToUTF8(version).length;
132 this.length = StyxUtils.HEADER_LENGTH + 4 + 2 + versionLen;
133 }
134
135 protected String getElements()
136 {
137 return ", " + this.maxMessageSize + ", " + this.version;
138 }
139
140 public String toFriendlyString()
141 {
142 return "Max msg size: " + this.maxMessageSize + " bytes, version = "
143 + this.version;
144 }
145
146 }