Merge "Added .gitreview file"
[packetcable.git] / protocol_plugins.packetcable / src / main / java / org / pcmm / rcd / impl / AbstractPCMMClient.java
1 /**
2  @header@
3  */
4 package org.pcmm.rcd.impl;
5
6 import java.io.IOException;
7 import java.net.InetAddress;
8 import java.net.Socket;
9 import java.net.UnknownHostException;
10
11 import org.pcmm.nio.PCMMChannel;
12 // import org.junit.Assert;
13 import org.pcmm.objects.MMVersionInfo;
14 import org.pcmm.rcd.IPCMMClient;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17 import org.umu.cops.stack.COPSMsg;
18
19 /**
20  * 
21  * default implementation for {@link IPCMMClient}
22  * 
23  * 
24  */
25 public class AbstractPCMMClient implements IPCMMClient {
26
27         protected Logger logger = LoggerFactory.getLogger(AbstractPCMMClient.class);
28         /**
29          * socket used to communicated with server.
30          */
31         private Socket socket;
32
33         private String clientHanlde;
34
35         private MMVersionInfo versionInfo;
36
37         private PCMMChannel channel;
38
39         public AbstractPCMMClient() {
40         }
41
42         /*
43          * (non-Javadoc)
44          * 
45          * @see pcmm.rcd.IPCMMClient#sendRequest(pcmm.messages.IMessage)
46          */
47         public void sendRequest(COPSMsg requestMessage) {
48                 try {
49                         channel.sendMsg(requestMessage);
50                 } catch (Exception e) {
51                         logger.error(e.getMessage(), getSocket());
52                 }
53         }
54
55         /*
56          * (non-Javadoc)
57          * 
58          * @see org.pcmm.rcd.IPCMMClient#readMessage()
59          */
60         public COPSMsg readMessage() {
61                 try {
62                         COPSMsg recvdMsg = channel.receiveMessage();
63                         // logger.debug("received message : " + recvdMsg.getHeader());
64                         return recvdMsg;
65                 } catch (Exception e) {
66                         logger.error(e.getMessage(), getSocket());
67                 }
68                 return null;
69         }
70
71         /*
72          * (non-Javadoc)
73          * 
74          * @see pcmm.rcd.IPCMMClient#tryConnect(java.lang.String, int)
75          */
76         public boolean tryConnect(String address, int port) {
77                 try {
78                         InetAddress addr = InetAddress.getByName(address);
79                         tryConnect(addr, port);
80                 } catch (UnknownHostException e) {
81                         logger.error(e.getMessage());
82                         return false;
83                 }
84                 return true;
85         }
86
87         /*
88          * (non-Javadoc)
89          * 
90          * @see pcmm.rcd.IPCMMClient#tryConnect(java.net.InetAddress, int)
91          */
92         public boolean tryConnect(InetAddress address, int port) {
93                 try {
94                         setSocket(new Socket(address, port));
95                 } catch (IOException e) {
96                         logger.error(e.getMessage());
97                         return false;
98                 }
99                 return true;
100         }
101
102         /*
103          * (non-Javadoc)
104          * 
105          * @see pcmm.rcd.IPCMMClient#disconnect()
106          */
107         public boolean disconnect() {
108                 if (isConnected()) {
109                         try {
110                                 socket.close();
111                                 channel = null;
112                         } catch (IOException e) {
113                                 logger.error(e.getMessage());
114                         }
115                 }
116                 return true;
117         }
118
119         /**
120          * @return the socket
121          */
122         public Socket getSocket() {
123                 return socket;
124         }
125
126         public PCMMChannel getChannel() {
127                 return channel;
128         }
129
130         /**
131          * @param socket
132          *            the socket to set
133          */
134         public void setSocket(Socket socket) {
135                 this.socket = socket;
136                 if (this.socket != null
137                                 && (this.channel == null || !this.channel.getSocket().equals(
138                                                 this.socket)))
139                         channel = new PCMMChannel(this.socket);
140         }
141
142         /*
143          * (non-Javadoc)
144          * 
145          * @see org.pcmm.rcd.IPCMMClient#isConnected()
146          */
147         public boolean isConnected() {
148                 return socket != null && socket.isConnected();
149         }
150
151         /**
152          * @return the versionInfo
153          */
154         public MMVersionInfo getVersionInfo() {
155                 return versionInfo;
156         }
157
158         /**
159          * @param versionInfo
160          *            the versionInfo to set
161          */
162         public void setVersionInfo(MMVersionInfo versionInfo) {
163                 this.versionInfo = versionInfo;
164         }
165
166         @Override
167         public String getClientHandle() {
168                 return clientHanlde;
169         }
170
171         @Override
172         public void setClientHandle(String handle) {
173                 this.clientHanlde = handle;
174         }
175
176 }