21031fc277fc8d7d6db5d8cd1e941eb55283f316
[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, String did, String uid,
43             String accesstoken) {
44         super(ctx);
45         mDeviceId = did;
46         mUserId = uid;
47         mAccessToken = accesstoken;
48     }
49
50     @Override
51     public String getDeviceId() {
52         return mDeviceId;
53     }
54
55     @Override
56     public String getUserId() {
57         return mUserId;
58     }
59
60     @Override
61     public String getAccessToken() {
62         return mAccessToken;
63     }
64
65     public Date getIssuedTime() {
66         return mIssuedTime;
67     }
68
69     public int getExpiredPolicy() {
70         return mExpiredPolicy;
71     }
72
73     public void setExpiredPolicy(int expiredPolicy) {
74         mIssuedTime = new Date();
75         this.mExpiredPolicy = expiredPolicy;
76     }
77
78     public void setUerId(String userId) {
79         this.mUserId = userId;
80     }
81
82     public void setAccessToken(String accessToken) {
83         this.mAccessToken = accessToken;
84     }
85
86     // This is called by cloud resource model
87     @Override
88     public void sendResponse(IResponse response) {
89         // This message must converted to CoapResponse
90         ctx.channel().writeAndFlush(response);
91     }
92
93     public IRequestChannel getRequestChannel() {
94         if (mCoapClient == null) {
95             mCoapClient = new CoapClient(ctx.channel());
96         }
97
98         return mCoapClient;
99     }
100
101     public boolean isExpiredTime() {
102
103         if (mExpiredPolicy == INFINITE_TIME) {
104             return false;
105         }
106
107         Date currentTime = new Date();
108         long difference = currentTime.getTime() - mIssuedTime.getTime();
109         long remainTime = mExpiredPolicy - difference / 1000;
110
111         if (remainTime < 0) {
112
113             Log.w("accessToken is expired..");
114             return true;
115         }
116
117         return false;
118     }
119
120     @Override
121     public void onConnected() {
122     }
123
124     @Override
125     public void onDisconnected() {
126     }
127
128 }