package com.genersoft.iot.vmp.gb28181.transmit.callback; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.context.request.async.DeferredResult; /** * @Description: 异步请求处理 * @author: swwheihei * @date: 2020年5月8日 下午7:59:05 */ @SuppressWarnings(value = {"rawtypes", "unchecked"}) @Component public class DeferredResultHolder { public static final String CALLBACK_CMD_DEVICESTATUS = "CALLBACK_DEVICESTATUS"; public static final String CALLBACK_CMD_DEVICEINFO = "CALLBACK_DEVICEINFO"; public static final String CALLBACK_CMD_DEVICECONTROL = "CALLBACK_DEVICECONTROL"; public static final String CALLBACK_CMD_DEVICECONFIG = "CALLBACK_DEVICECONFIG"; public static final String CALLBACK_CMD_CONFIGDOWNLOAD = "CALLBACK_CONFIGDOWNLOAD"; public static final String CALLBACK_CMD_CATALOG = "CALLBACK_CATALOG"; public static final String CALLBACK_CMD_RECORDINFO = "CALLBACK_RECORDINFO"; public static final String CALLBACK_CMD_PlAY = "CALLBACK_PLAY"; public static final String CALLBACK_CMD_STOP = "CALLBACK_STOP"; public static final String CALLBACK_ONVIF = "CALLBACK_ONVIF"; public static final String CALLBACK_CMD_MOBILEPOSITION = "CALLBACK_MOBILEPOSITION"; public static final String CALLBACK_CMD_PRESETQUERY = "CALLBACK_PRESETQUERY"; public static final String CALLBACK_CMD_ALARM = "CALLBACK_ALARM"; public static final String CALLBACK_CMD_BROADCAST = "CALLBACK_BROADCAST"; private Map map = new ConcurrentHashMap(); public void put(String key, DeferredResult result) { map.put(key, result); } public DeferredResult get(String key) { return map.get(key); } public void invokeResult(RequestMessage msg) { DeferredResult result = map.get(msg.getId()); if (result == null) { return; } result.setResult(new ResponseEntity<>(msg.getData(),HttpStatus.OK)); } }