072da7b1f860fb1542f3cf768830df0a4e587baa
[packetcable.git] / protocol_plugins.packetcable / src / main / java / org / umu / cops / stack / COPSUtil.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.InputStream;\r
11 import java.io.OutputStream;\r
12 import java.net.Socket;\r
13 import java.util.Date;\r
14 \r
15 /**\r
16  * COPS Utils\r
17  *\r
18  * @version COPSUtil.java, v 2.00 2004\r
19  *\r
20  */\r
21 public class COPSUtil {\r
22 \r
23     /**\r
24      * Method writeData\r
25      *\r
26      * @param    id                  a  Socket\r
27      * @param    data                a  byte[]\r
28      * @param    len                 an int\r
29      *\r
30      * @throws   IOException\r
31      *\r
32      */\r
33     static void writeData(Socket id, byte[] data, int len) throws IOException {\r
34         OutputStream output;\r
35         output = id.getOutputStream();\r
36 \r
37         output.write(data,0,len);\r
38     }\r
39 \r
40     /**\r
41      * Reads nchar from a given sockets, blocks on read untill nchar are read of conenction has error\r
42      * bRead returns the bytes read\r
43      *\r
44      * @param    connId              a  Socket\r
45      * @param    dataRead            a  byte[]\r
46      * @param    nchar               an int\r
47      *\r
48      * @return   an int\r
49      *\r
50      * @throws   IOException\r
51      *\r
52      */\r
53     static int readData(Socket connId, byte[] dataRead, int nchar)  throws IOException {\r
54         InputStream input;\r
55         input = connId.getInputStream();\r
56 \r
57         int nread = 0;\r
58         int startTime = (int) (new Date().getTime());\r
59         do {\r
60             if (input.available() != 0) {\r
61                 nread += input.read(dataRead,nread,nchar-nread);\r
62                 startTime = (int) (new Date().getTime());\r
63             } else {\r
64                 int nowTime = (int) (new Date().getTime());\r
65                 if ((int)(nowTime - startTime) > 2000)\r
66                     break;\r
67             }\r
68         } while (nread != nchar);\r
69 \r
70         return nread;\r
71     }\r
72 }\r
73 \r