Fixed building of models, moved code into directory structure.
[packetcable.git] / protocol_plugins.packetcable / src / main / java / org / umu / cops / stack / COPSTransceiver.java
diff --git a/protocol_plugins.packetcable/src/main/java/org/umu/cops/stack/COPSTransceiver.java b/protocol_plugins.packetcable/src/main/java/org/umu/cops/stack/COPSTransceiver.java
new file mode 100644 (file)
index 0000000..56471de
--- /dev/null
@@ -0,0 +1,91 @@
+/*\r
+ * Copyright (c) 2003 University of Murcia.  All rights reserved.\r
+ * --------------------------------------------------------------\r
+ * For more information, please see <http://www.umu.euro6ix.org/>.\r
+ */\r
+\r
+package org.umu.cops.stack;\r
+\r
+import java.io.IOException;\r
+import java.net.Socket;\r
+\r
+// import org.umu.cops.common.COPSDebug;\r
+\r
+/**\r
+ * COPS Transceiver\r
+ *\r
+ * @version COPSTransceiver.java, v 1.00 2003\r
+ *\r
+ */\r
+public class COPSTransceiver {\r
+\r
+    /**\r
+     * Method sendMsg\r
+     *\r
+     * @param    msg                 a  COPSMsg\r
+     * @param    fd                  a  Socket\r
+     *\r
+     * @throws   IOException\r
+     * @throws   COPSException\r
+     *\r
+     */\r
+    static public void sendMsg(COPSMsg msg, Socket fd) throws IOException, COPSException {\r
+        // COPSDebug.out("COPSTransceiver", "sendMsg ******************************** START" );\r
+\r
+        msg.checkSanity();\r
+        msg.writeData(fd);\r
+\r
+        // COPSDebug.out("COPSTransceiver", "sendMsg ******************************** END" );\r
+    }\r
+\r
+    /**\r
+     * Method receiveMsg\r
+     *\r
+     * @param    fd                  a  Socket\r
+     *\r
+     * @return   a COPSMsg\r
+     *\r
+     * @throws   IOException\r
+     * @throws   COPSException\r
+     *\r
+     */\r
+    static public COPSMsg receiveMsg (Socket fd)  throws IOException, COPSException {\r
+        int nread = 0;\r
+        byte[] hBuf = new byte[8];\r
+\r
+        // COPSDebug.out("COPSTransceiver", "receiveMsg ******************************** START" );\r
+\r
+        nread = COPSUtil.readData(fd, hBuf, 8);\r
+\r
+        if (nread == 0) {\r
+            throw new COPSException("Error reading connection");\r
+        }\r
+\r
+        if (nread != 8) {\r
+            throw new COPSException("Bad COPS message");\r
+        }\r
+\r
+        COPSHeader hdr = new COPSHeader(hBuf);\r
+        int dataLen = hdr.getMsgLength() - hdr.getHdrLength();\r
+        // COPSDebug.out("COPSTransceiver", "COPS Msg length :[" + dataLen + "]\n" );\r
+        byte[] buf = new byte[dataLen + 1];\r
+        nread = 0;\r
+\r
+        nread = COPSUtil.readData(fd, buf, dataLen);\r
+        buf[dataLen] = (byte) '\0';\r
+        // COPSDebug.out("COPSTransceiver", "Data read length:[" + nread + "]\n");\r
+\r
+        if (nread != dataLen) {\r
+            throw new COPSException("Bad COPS message");\r
+        }\r
+\r
+        COPSMsgParser prser = new COPSMsgParser();\r
+        COPSMsg msg = prser.parse(hdr, buf);\r
+\r
+        // COPSDebug.out("COPSTransceiver", "Message received");\r
+\r
+        // COPSDebug.out("COPSTransceiver", "receiveMsg ******************************** END" );\r
+        return msg;\r
+    }\r
+}\r
+\r