Basic fixes to make build work :)
[packetcable.git] / src / main / java / org / umu / cops / stack / COPSContext.java
1 /*\r
2  * Copyright (c) 2003 University of Murcia.  All rights reserved.\r
3  * --------------------------------------------------------------\r
4  * For more information, please see <http://www.umu.euro6ix.org/>.\r
5  */\r
6 \r
7 package org.umu.cops.stack;\r
8 \r
9 import java.io.IOException;\r
10 import java.io.OutputStream;\r
11 import java.net.Socket;\r
12 \r
13 /**\r
14  * COPS Context Object\r
15  *\r
16  * @version COPSContext.java, v 1.00 2003\r
17  *\r
18  */\r
19 public class COPSContext extends COPSObjBase {\r
20 \r
21     public final static byte IN_ADMIN = 0x01;\r
22     public final static byte RES_ALLOC = 0x02;\r
23     public final static byte OUT = 0x04;\r
24     public final static byte CONFIG = 0x08;\r
25 \r
26     private COPSObjHeader _objHdr;\r
27     private short _rType;\r
28     private short _mType;\r
29 \r
30     ///\r
31     public COPSContext(short rType, short mType ) {\r
32         _objHdr = new COPSObjHeader();\r
33         _objHdr.setCNum(COPSObjHeader.COPS_CONTEXT);\r
34         _objHdr.setCType((byte) 1);\r
35         _rType = rType;\r
36         _mType = mType;\r
37         _objHdr.setDataLength((short) 4);\r
38     }\r
39 \r
40     /**\r
41           Parse the data and create a Context object\r
42      */\r
43     protected COPSContext(byte[] dataPtr) {\r
44         _objHdr = new COPSObjHeader();\r
45         _objHdr.parse(dataPtr);\r
46         // _objHdr.checkDataLength();\r
47 \r
48         _rType |= ((short) dataPtr[4]) << 8;\r
49         _rType |= ((short) dataPtr[5]) & 0xFF;\r
50 \r
51         _mType |= ((short) dataPtr[6]) << 8;\r
52         _mType |= ((short) dataPtr[7]) & 0xFF;\r
53 \r
54         _objHdr.setDataLength( (short) 4);\r
55     }\r
56 \r
57     /**\r
58      * Write object in network byte order to a given network socket\r
59      *\r
60      * @param    id                  a  Socket\r
61      *\r
62      * @throws   IOException\r
63      *\r
64      */\r
65     public void writeData(Socket id) throws IOException {\r
66         _objHdr.writeData(id);\r
67 \r
68         byte[] buf = new byte[4];\r
69 \r
70         buf[0] = (byte) (_rType >> 8);\r
71         buf[1] = (byte) _rType;\r
72 \r
73         buf[2] = (byte) (_mType >> 8);\r
74         buf[3] = (byte) _mType;\r
75 \r
76         COPSUtil.writeData(id, buf, 4);\r
77     }\r
78 \r
79     /**\r
80      * Returns size in number of octects, including header\r
81      *\r
82      * @return   a short\r
83      *\r
84      */\r
85     public short getDataLength() {\r
86         //Add the size of the header also\r
87         return (_objHdr.getDataLength());\r
88     }\r
89 \r
90     /**\r
91      * Returns the detail description of the request type\r
92      *\r
93      * @return   a String\r
94      *\r
95      */\r
96     public String getDescription() {\r
97         String retStr = new String();\r
98         if ((_rType & 0x01) != 0) {\r
99             retStr += (retStr.length() != 0) ? "," : "";\r
100             retStr += "Incoming Message/Admission Control";\r
101         }\r
102         if ((_rType & 0x02) != 0) {\r
103             retStr += (retStr.length() != 0) ? "," : "";\r
104             retStr += "Resource allocation";\r
105         }\r
106         if ((_rType & 0x04) != 0) {\r
107             retStr += (retStr.length() != 0) ? "," : "";\r
108             retStr += "Outgoing message";\r
109         }\r
110         if ((_rType & 0x08) != 0) {\r
111             retStr += (retStr.length() != 0) ? "," : "";\r
112             retStr += "Configuration";\r
113         }\r
114         return retStr;\r
115     }\r
116 \r
117     /**\r
118      * Method isIncomingMessage\r
119      *\r
120      * @return   a boolean\r
121      *\r
122      */\r
123     public boolean isIncomingMessage() {\r
124         return (_rType & IN_ADMIN) != 0;\r
125     };\r
126 \r
127     /**\r
128      * Method isAdminControl\r
129      *\r
130      * @return   a boolean\r
131      *\r
132      */\r
133     public boolean isAdminControl() {\r
134         return (_rType & IN_ADMIN) != 0;\r
135     };\r
136 \r
137     /**\r
138      * Method isResourceAllocationReq\r
139      *\r
140      * @return   a boolean\r
141      *\r
142      */\r
143     public boolean isResourceAllocationReq() {\r
144         return (_rType & RES_ALLOC) != 0;\r
145     };\r
146 \r
147     /**\r
148      * Method isOutgoingMessage\r
149      *\r
150      * @return   a boolean\r
151      *\r
152      */\r
153     public boolean isOutgoingMessage() {\r
154         return (_rType & OUT) != 0;\r
155     };\r
156 \r
157     /**\r
158      * Method isConfigRequest\r
159      *\r
160      * @return   a boolean\r
161      *\r
162      */\r
163     public boolean isConfigRequest() {\r
164         return (_rType & CONFIG) != 0;\r
165     };\r
166 \r
167     /**\r
168      * Method getMessageType\r
169      *\r
170      * @return   a short\r
171      *\r
172      */\r
173     public short getMessageType() {\r
174         return (_mType) ;\r
175     };\r
176 \r
177     /**\r
178      * Method getRequestType\r
179      *\r
180      * @return   a short\r
181      *\r
182      */\r
183     public short getRequestType() {\r
184         return (_rType);\r
185     };\r
186 \r
187     /**\r
188      * Method isContext\r
189      *\r
190      * @return   a boolean\r
191      *\r
192      */\r
193     public boolean isContext() {\r
194         return true;\r
195     }\r
196 \r
197     /**\r
198      * Write an object textual description in the output stream\r
199      *\r
200      * @param    os                  an OutputStream\r
201      *\r
202      * @throws   IOException\r
203      *\r
204      */\r
205     public void dump(OutputStream os) throws IOException {\r
206         _objHdr.dump(os);\r
207         os.write(new String("context: " + getDescription() + "," + _mType + "\n").getBytes());\r
208     }\r
209 }\r
210 \r
211 \r