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
16 * @version COPSMsg.java, v 1.00 2003
\r
19 abstract public class COPSMsg {
\r
21 protected COPSHeader _hdr;
\r
22 protected int _dataLength;
\r
23 protected int _dataStart;
\r
28 * @return a COPSHeader
\r
31 public COPSHeader getHeader() {
\r
38 * @param id a Socket
\r
40 * @throws IOException
\r
43 public abstract void writeData(Socket id) throws IOException;
\r
46 * Method getMsgLength
\r
51 public int getMsgLength() {
\r
52 return _hdr.getMsgLength();
\r
58 * @param hdr a COPSHeader
\r
59 * @param data a byte[]
\r
61 * @throws COPSException
\r
64 protected abstract void parse(COPSHeader hdr, byte[] data) throws COPSException;
\r
69 * @param data a byte[]
\r
71 * @throws COPSException
\r
74 protected abstract void parse(byte[] data) throws COPSException;
\r
77 * Method parseHeader
\r
79 * @param data a byte[]
\r
81 * @throws COPSException
\r
84 protected void parseHeader(byte[] data) throws COPSException {
\r
88 // _hdr = new COPSHeader(COPSHeader.COPS_OP_CAT);
\r
89 _hdr = new COPSHeader(data);
\r
91 _dataLength = _hdr.getMsgLength();
\r
93 //header is already read
\r
94 _dataLength = _hdr.getMsgLength() - 8;
\r
97 //validate the message length
\r
98 //Should fill on the 32bit boundary
\r
99 if ((_hdr.getMsgLength() % 4 != 0)) {
\r
100 throw new COPSException("Bad message format: COPS message is not on 32 bit bounday");
\r
104 /** Checks the sanity of COPS message and throw an
\r
105 COPSBadDataException when data is bad.
\r
107 public abstract void checkSanity()throws COPSException;
\r
110 * Write an object textual description in the output stream
\r
112 * @param os an OutputStream
\r
114 * @throws IOException
\r
117 public void dump(OutputStream os) throws IOException {
\r
118 os.write(new String("COPS Message").getBytes());
\r