Fix keep-alive to filter correctly.
[iotivity.git] / cloud / stack / src / main / java / org / iotivity / cloud / base / device / CoapDevice.java
1 /*
2  * //******************************************************************
3  * //
4  * // Copyright 2016 Samsung Electronics All Rights Reserved.
5  * //
6  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7  * //
8  * // Licensed under the Apache License, Version 2.0 (the "License");
9  * // you may not use this file except in compliance with the License.
10  * // You may obtain a copy of the License at
11  * //
12  * //      http://www.apache.org/licenses/LICENSE-2.0
13  * //
14  * // Unless required by applicable law or agreed to in writing, software
15  * // distributed under the License is distributed on an "AS IS" BASIS,
16  * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * // See the License for the specific language governing permissions and
18  * // limitations under the License.
19  * //
20  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21  */
22 package org.iotivity.cloud.base.device;
23
24 import java.util.Date;
25
26 import org.iotivity.cloud.base.connector.CoapClient;
27 import org.iotivity.cloud.base.protocols.IResponse;
28 import org.iotivity.cloud.util.Log;
29
30 import io.netty.channel.ChannelHandlerContext;
31
32 public class CoapDevice extends Device {
33     private CoapClient       mCoapClient    = null;
34     private String           mUserId        = null;
35     private String           mDeviceId      = null;
36     private String           mAccessToken   = null;
37     private Date             mIssuedTime    = null;
38     private int              mExpiredPolicy = 0;
39
40     private static final int INFINITE_TIME  = -1;
41
42     public CoapDevice(ChannelHandlerContext ctx) {
43         super(ctx);
44     }
45
46     public void updateDevice(String did, String uid, String accesstoken) {
47         mDeviceId = did;
48         mUserId = uid;
49         mAccessToken = accesstoken;
50     }
51
52     @Override
53     public String getDeviceId() {
54         return mDeviceId;
55     }
56
57     @Override
58     public String getUserId() {
59         return mUserId;
60     }
61
62     @Override
63     public String getAccessToken() {
64         return mAccessToken;
65     }
66
67     public Date getIssuedTime() {
68         return mIssuedTime;
69     }
70
71     public int getExpiredPolicy() {
72         return mExpiredPolicy;
73     }
74
75     public void setExpiredPolicy(int expiredPolicy) {
76         mIssuedTime = new Date();
77         this.mExpiredPolicy = expiredPolicy;
78     }
79
80     public void setUerId(String userId) {
81         this.mUserId = userId;
82     }
83
84     public void setAccessToken(String accessToken) {
85         this.mAccessToken = accessToken;
86     }
87
88     // This is called by cloud resource model
89     @Override
90     public void sendResponse(IResponse response) {
91         // This message must converted to CoapResponse
92         ctx.channel().writeAndFlush(response);
93     }
94
95     public IRequestChannel getRequestChannel() {
96         if (mCoapClient == null) {
97             mCoapClient = new CoapClient(ctx.channel());
98         }
99
100         return mCoapClient;
101     }
102
103     public boolean isExpiredTime() {
104
105         if (mExpiredPolicy == INFINITE_TIME) {
106             return false;
107         }
108
109         Date currentTime = new Date();
110         long difference = currentTime.getTime() - mIssuedTime.getTime();
111         long remainTime = mExpiredPolicy - difference / 1000;
112
113         if (remainTime < 0) {
114
115             Log.w("accessToken is expired..");
116             return true;
117         }
118
119         return false;
120     }
121
122     @Override
123     public void onConnected() {
124     }
125
126     @Override
127     public void onDisconnected() {
128     }
129
130 }