OSDN Git Service

Initial commit
[ultramonkey-l7/l7gui.git] / src / src / org / ultramonkey / l7 / model / L7SyncSocket.java
1 package org.ultramonkey.l7.model;
2
3 import java.io.BufferedReader;
4 import java.io.BufferedWriter;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.OutputStream;
8 import java.io.OutputStreamWriter;
9
10 import org.apache.log4j.Logger;
11
12 /**
13  * <p>
14  * class L7SyncSocket
15  * </p>
16  * <p>
17  * Copyright(c) NTT COMWARE 2008
18  * </p>
19  * 
20  * @author momose
21  */
22 public class L7SyncSocket {
23         protected Logger debugLogger = Logger
24                         .getLogger(LogCategorySet.SYNC_CONNECTION);
25
26         protected OutputStream outputStream;
27
28         protected InputStream inputStream;
29
30         protected BufferedReader bufferedReader;
31
32         protected BufferedWriter bufferedWriter;
33
34         protected final String SEPARATOR = "\r\n";
35
36         protected final int ENTRY_NUMBER = 3;
37
38         /**
39          * Constructor
40          * 
41          */
42         public L7SyncSocket() {
43                 // debug log(constructor)
44                 if (debugLogger.isDebugEnabled()) {
45                         debugLogger.debug("11221 class L7SyncSocket created.");
46                 }
47         }
48
49         /**
50          * <p>
51          * Sets inputStream and outputastream which got at L7SyncManager.
52          * </p>
53          * 
54          * @param inputStream
55          * @param outputStream
56          * @throws MessageView
57          */
58         public void openConnection(InputStream inputStream,
59                         OutputStream outputStream) throws MessageView {
60
61                 // debug log(in method)
62                 if (debugLogger.isDebugEnabled()) {
63                         StringBuffer buf = new StringBuffer();
64                         buf.append("L7SyncSocket::openConnection(InputStream inputStream, OutputStream outputStream) throws MessageView in ");
65
66                         if (null != inputStream) {
67                                 buf.append("inputStream= " + inputStream.toString() + ", ");
68                         } else {
69                                 buf.append("inputStream= " + "null, ");
70                         }
71                         if (null != outputStream) {
72                                 buf.append("outputStream= " + outputStream.toString());
73                         } else {
74                                 buf.append("outputStream= " + "null");
75                         }
76                         debugLogger.debug("11222 " + buf.toString());
77                 }
78
79                 if ((null == inputStream) || (null == outputStream)) {
80                         throw new MessageView(40009, LogCategorySet.SYNC_CONNECTION,
81                                         Message.SYNC_INVALID_ARGUMENT + " OpenConnection : null");
82                 }
83
84                 this.inputStream = inputStream;
85                 this.outputStream = outputStream;
86
87                 bufferedWriter = new BufferedWriter(new OutputStreamWriter(
88                                 this.outputStream));
89
90                 bufferedReader = new BufferedReader(new InputStreamReader(
91                                 this.inputStream));
92
93                 // debug log(out method)
94                 if (debugLogger.isDebugEnabled()) {
95                         StringBuffer buf = new StringBuffer();
96                         buf.append("L7SyncSocket::openConnection(InputStream inputStream, OutputStream outputStream) throws MessageView out ");
97                         debugLogger.debug("11223 " + buf.toString());
98                 }
99
100         }
101
102         /**
103          * <p>
104          * Sends data.
105          * </p>
106          * 
107          * @param payloadStr
108          *            recieve data
109          * @throws MessageView
110          */
111         public void sendData(String[] payloadStr) throws MessageView {
112                 // debug log(in method)
113                 if (debugLogger.isDebugEnabled()) {
114                         StringBuffer buf = new StringBuffer();
115                         buf.append("L7SyncSocket::sendData(String[] payloadStr) throws MessageView in ");
116                         buf.append("payloadStr= ");
117                         if (null == payloadStr) {
118                                 buf.append("null");
119                         } else {
120                                 for (int i = 0; i < payloadStr.length; i++) {
121                                         if (payloadStr.length - 1 == i) {
122                                                 buf.append(payloadStr[i].toString());
123                                                 break;
124                                         }
125                                         buf.append(payloadStr[i].toString() + ",");
126                                 }
127                         }
128                         debugLogger.debug("11224 " + buf.toString());
129                 }
130
131                 if (null == payloadStr) {
132                         throw new MessageView(40010, LogCategorySet.SYNC_CONNECTION,
133                                         Message.SYNC_INVALID_ARGUMENT + " SendData : " + payloadStr);
134                 }
135                 try {
136                         for (int i = 0; i < payloadStr.length; i++) {
137                                 bufferedWriter.write(payloadStr[i]);
138                                 bufferedWriter.write(SEPARATOR);
139                         }
140                         bufferedWriter.write(SEPARATOR);
141                         bufferedWriter.flush();
142                 } catch (Exception e) {
143                         throw new MessageView(50001, LogCategorySet.SYNC_CONNECTION,
144                                         Message.SYNC_SEND_ERROR + " : " + e);
145                 }
146                 // debug log(out method)
147                 if (debugLogger.isDebugEnabled()) {
148                         StringBuffer buf = new StringBuffer();
149                         buf.append("L7SyncSocket::sendData(String[] payloadStr) throws MessageView out ");
150                         debugLogger.debug("11225 " + buf.toString());
151                 }
152         }
153
154         /**
155          * <p>
156          * Recieves data.
157          * </p>
158          * 
159          * @return buffer send data
160          * @throws MessageView
161          */
162         public String[] recvData() throws MessageView {
163                 // debug log(in method)
164                 if (debugLogger.isDebugEnabled()) {
165                         StringBuffer buf = new StringBuffer();
166                         buf.append("L7SyncSocket::recvData() throws MessageView in ");
167                         debugLogger.debug("11226 " + buf.toString());
168                 }
169
170                 String readStr;
171                 String[] readDataArray = null;
172
173                 try {
174                         readDataArray = new String[ENTRY_NUMBER];
175                         int i = 0;
176                         while (true) {
177                                 readStr = bufferedReader.readLine();
178                                 if (null == readStr) {
179                                         return null;
180                                 }
181
182                                 if ((0 == readStr.length())) {
183                                         break;
184                                 }
185                                 if (i >= ENTRY_NUMBER) {
186                                         throw new MessageView(40011,
187                                                         LogCategorySet.SYNC_CONNECTION,
188                                                         Message.SYNC_INVALID_RECV_DATA);
189                                 }
190                                 readDataArray[i] = readStr;
191                                 i++;
192                         }
193                 } catch (Exception e) {
194                         throw new MessageView(50002, LogCategorySet.SYNC_CONNECTION,
195                                         Message.SYNC_RECV_ERROR + " : " + e);
196                 }
197
198                 // debug log(out method)
199                 if (debugLogger.isDebugEnabled()) {
200                         StringBuffer buf = new StringBuffer();
201                         buf.append("L7SyncSocket::recvData() throws MessageView out ");
202                         buf.append("return= ");
203                         if (0 == readDataArray.length) {
204                                 buf.append("null");
205                         } else {
206                                 for (int i = 0; i < readDataArray.length; i++) {
207                                         if (readDataArray.length - 1 == i) {
208                                                 buf.append(readDataArray[i].toString());
209                                                 break;
210                                         }
211                                         buf.append(readDataArray[i].toString() + ",");
212                                 }
213                         }
214                         debugLogger.debug("11227 " + buf.toString());
215                 }
216                 return readDataArray;
217         }
218
219         /**
220          * <p>
221          * Active server closes connection after recieving all results from stand-by
222          * server.
223          * </p>
224          * 
225          * @throws MessageView
226          */
227         public void closeConnection() throws MessageView {
228                 // debug log(in method)
229                 if (debugLogger.isDebugEnabled()) {
230                         StringBuffer buf = new StringBuffer();
231                         buf.append("L7SyncSocket::closeConnection() throws MessageView in ");
232                         debugLogger.debug("11228 " + buf.toString());
233                 }
234                 try {
235                         outputStream.close();
236                 } catch (Exception e) {
237                         throw new MessageView(50003, LogCategorySet.SYNC_CONNECTION,
238                                         Message.SYNC_CLOSE_ERROR + " :" + e);
239                 }
240                 // debug log(out method)
241                 if (debugLogger.isDebugEnabled()) {
242                         StringBuffer buf = new StringBuffer();
243                         buf.append("L7SyncSocket::closeConnection() throws MessageView out ");
244                         debugLogger.debug("11229 " + buf.toString());
245                 }
246         }
247 }