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 java.io.IOException;
\r
10 import java.io.OutputStream;
\r
11 import java.net.Socket;
\r
14 * COPS Client Specific Information Object
\r
16 * @version COPSClientSI.java, v 1.00 2003
\r
19 public class COPSClientSI extends COPSObjBase {
\r
20 public final static byte CSI_SIGNALED = 1;
\r
21 public final static byte CSI_NAMED = 2;
\r
23 private COPSObjHeader _objHdr;
\r
24 private COPSData _data;
\r
25 private COPSData _padding;
\r
28 public COPSClientSI(byte type) {
\r
29 _objHdr = new COPSObjHeader();
\r
30 _objHdr.setCNum(COPSObjHeader.COPS_CSI);
\r
31 _objHdr.setCType(type);
\r
34 public COPSClientSI(byte cnum, byte ctype) {
\r
35 _objHdr = new COPSObjHeader();
\r
36 _objHdr.setCNum(cnum);
\r
37 _objHdr.setCType(ctype);
\r
41 Parse the data and create a ClientSI object
\r
43 protected COPSClientSI(byte[] dataPtr) {
\r
44 _objHdr = new COPSObjHeader();
\r
45 _objHdr.parse(dataPtr);
\r
46 // _objHdr.checkDataLength();
\r
48 //Get the length of data following the obj header
\r
49 short dLen = (short) (_objHdr.getDataLength() - 4);
\r
50 COPSData d = new COPSData(dataPtr, 4, dLen);
\r
57 * @param data a COPSData
\r
60 public void setData(COPSData data) {
\r
62 if (_data.length() % 4 != 0) {
\r
63 int padLen = 4 - _data.length() % 4;
\r
64 _padding = getPadding(padLen);
\r
66 _objHdr.setDataLength((short) _data.length());
\r
70 * Returns size in number of octects, including header
\r
75 public short getDataLength() {
\r
76 //Add the size of the header also
\r
78 if (_padding != null) lpadding = _padding.length();
\r
79 return (short) (_objHdr.getDataLength() + lpadding);
\r
85 * @return a COPSData
\r
88 public COPSData getData() {
\r
98 public boolean isClientSI() {
\r
103 * Write data on a given network socket
\r
105 * @param id a Socket
\r
107 * @throws IOException
\r
110 public void writeData(Socket id) throws IOException {
\r
111 _objHdr.writeData(id);
\r
112 COPSUtil.writeData(id, _data.getData(), _data.length());
\r
113 if (_padding != null) {
\r
114 COPSUtil.writeData(id, _padding.getData(), _padding.length());
\r
119 * Write an object textual description in the output stream
\r
121 * @param os an OutputStream
\r
123 * @throws IOException
\r
126 public void dump(OutputStream os) throws IOException {
\r
128 os.write(new String("client-SI: " + _data.str() + "\n").getBytes());
\r