package com.csc.library.factory; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import com.csc.library.properties.CscSession; import com.csc.library.properties.ResponsePools; import com.csc.library.request.RequestWebsocket; import com.csc.library.response.ResponseData; import com.csc.library.response.ResponsePropertiesImpl; import com.csc.library.response.ResponseStatus; import com.csc.library.response.ResponseWebsocket; import com.csc.library.utilities.MyLog; public class ResponseFactory { private static ResponseFactory instance; //private Map<CscSession,List<ResponseWebsocket>> response = new HashMap<CscSession ,List<ResponseWebsocket>>(); private ResponsePools<ResponsePropertiesImpl> response; private PropertiesFactory propInstance; private ResponseFactory(){ } public static ResponseFactory getInstance(){ if(instance == null){ instance = new ResponseFactory(); instance.propInstance = PropertiesFactory.getInstance(); instance.response = ResponsePools.getInstance(); } return instance; } public void sendResponseWebsocket(CscSession session , RequestWebsocket req ,ResponseStatus state, String message){ ResponsePropertiesImpl res = this.getResponseWebsocket(session); res.setRequestWebsocket(req); res.setMessage(message); res.setResponseStatus(state); this.sendResponse(session, res); } public void sendResponseWebsocket(CscSession session , RequestWebsocket req ,ResponseData resData, String message){ ResponsePropertiesImpl res = this.getResponseWebsocket(session); res.setRequestWebsocket(req); res.setMessage(message); res.setResponseStatus(ResponseStatus.Complete); res.setResponseData(resData); this.sendResponse(session, res); } protected ResponsePropertiesImpl getResponseWebsocket(CscSession session){ ResponsePropertiesImpl res = null; try{ res = this.response.pop(); if(res == null){ res = new ResponsePropertiesImpl(); } }catch(Exception e){ MyLog.error(this , session.getUProfile() , e); } return res; } protected void sendResponse(CscSession session , ResponseWebsocket res){ session.sendMessage(propInstance.toJson(res)); res.clear(); this.response.push((ResponsePropertiesImpl)res); } }