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
7 package org.umu.cops.stack;
\r
9 import org.umu.cops.stack.COPSObjHeader.CNum;
\r
11 import java.io.IOException;
\r
12 import java.io.OutputStream;
\r
13 import java.net.Socket;
\r
16 * COPS Client Specific Information Object
\r
18 * @version COPSClientSI.java, v 1.00 2003
\r
21 public class COPSClientSI extends COPSObjBase {
\r
22 public final static byte CSI_SIGNALED = 1;
\r
23 public final static byte CSI_NAMED = 2;
\r
25 private COPSObjHeader _objHdr;
\r
26 private COPSData _data;
\r
27 private COPSData _padding;
\r
30 public COPSClientSI(byte type) {
\r
31 _objHdr = new COPSObjHeader(CNum.CSI, COPSObjHeader.VAL_TO_CTYPE.get((int)type));
\r
34 public COPSClientSI(byte cnum, byte ctype) {
\r
35 _objHdr = new COPSObjHeader(COPSObjHeader.VAL_TO_CNUM.get((int)cnum), COPSObjHeader.VAL_TO_CTYPE.get((int)ctype));
\r
39 Parse the data and create a ClientSI object
\r
41 protected COPSClientSI(byte[] dataPtr) {
\r
42 _objHdr = COPSObjHeader.parse(dataPtr);
\r
44 //Get the length of data following the obj header
\r
45 short dLen = (short) (_objHdr.getDataLength() - 4);
\r
46 COPSData d = new COPSData(dataPtr, 4, dLen);
\r
53 * @param data a COPSData
\r
56 public void setData(COPSData data) {
\r
58 if (_data.length() % 4 != 0) {
\r
59 int padLen = 4 - _data.length() % 4;
\r
60 _padding = getPadding(padLen);
\r
62 _objHdr.setDataLength((short) _data.length());
\r
66 * Returns size in number of octects, including header
\r
71 public short getDataLength() {
\r
72 //Add the size of the header also
\r
74 if (_padding != null) lpadding = _padding.length();
\r
75 return (short) (_objHdr.getDataLength() + lpadding);
\r
81 * @return a COPSData
\r
84 public COPSData getData() {
\r
94 public boolean isClientSI() {
\r
99 * Write data on a given network socket
\r
101 * @param id a Socket
\r
103 * @throws IOException
\r
106 public void writeData(Socket id) throws IOException {
\r
107 _objHdr.writeData(id);
\r
108 COPSUtil.writeData(id, _data.getData(), _data.length());
\r
109 if (_padding != null) {
\r
110 COPSUtil.writeData(id, _padding.getData(), _padding.length());
\r
115 * Write an object textual description in the output stream
\r
117 * @param os an OutputStream
\r
119 * @throws IOException
\r
122 public void dump(OutputStream os) throws IOException {
\r
124 os.write(new String("client-SI: " + _data.str() + "\n").getBytes());
\r