this.sessionManager = sessionManager;
connectPool = new HashMap<ChannelHandlerContext, Long>();
timer = new Timer();
- timer.schedule(new KeepAliveTask(), 30000, 60000);
cbor = new Cbor<HashMap<String, Integer>>();
}
+ public void startSessionChecker() {
+ timer.schedule(new KeepAliveTask(), 30000, 60000);
+ }
+
+ public void stopSessionChecker() {
+ timer.cancel();
+ }
+
/**
* API for receiving message(message to keepalive resource)
- *
+ *
* @param ctx
* ChannelHandlerContext of request message
* @param request
case PUT:
HashMap<String, Integer> payloadData = null;
payloadData = cbor.parsePayloadFromCbor(request.getPayload(),
- new HashMap<String, Integer>().getClass());
+ HashMap.class);
Logger.d("Receive payloadData : " + payloadData);
- Logger.d("interval : " + payloadData.get("in"));
-
- connectPool.put(ctx, System.currentTimeMillis()
- + (payloadData.get("in") * (long) 60000));
+ if (payloadData != null) {
+ if (payloadData.containsKey("in")) {
+ Logger.d("interval : " + payloadData.get("in"));
+ connectPool.put(ctx, System.currentTimeMillis()
+ + (payloadData.get("in") * (long) 60000));
+ }
+ }
response = makeResponse(request);
break;
/**
* API for making response to Resource
- *
+ *
* @param request
* ChannelHandlerContext of request message
*/
/**
* API for making interval and first response to Resource
- *
+ *
* @param request
* ChannelHandlerContext of request message
*/
// check interval
while (iterator.hasNext()) {
ChannelHandlerContext key = iterator.next();
- Long lifeTime = (Long) map.get(key);
- Logger.d("KeepAliveTask Operating : "
- + key.channel().toString() + ", Time : "
- + (lifeTime - currentTime));
- if (lifeTime < currentTime) {
- deleteList.add(key);
+ if (map.containsKey(key)) {
+ if (map.get(key) != null) {
+ Long lifeTime = (Long) map.get(key);
+ if (lifeTime != null) {
+ Logger.d("KeepAliveTask Operating : "
+ + key.channel().toString() + ", Time : "
+ + (lifeTime - currentTime));
+ if (lifeTime < currentTime) {
+ deleteList.add(key);
+ }
+ }
+ }
}
}