|
|
@@ -1,7 +1,5 @@
|
|
|
package org.jetlinks.community.media.controller;
|
|
|
|
|
|
-import cn.hutool.json.JSONObject;
|
|
|
-import com.google.common.collect.Maps;
|
|
|
import gov.nist.javax.sip.stack.SIPDialog;
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
@@ -11,12 +9,10 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.hswebframework.web.authorization.annotation.*;
|
|
|
import org.hswebframework.web.crud.service.ReactiveCrudService;
|
|
|
import org.hswebframework.web.crud.web.reactive.ReactiveServiceCrudController;
|
|
|
-import org.hswebframework.web.crud.web.reactive.ReactiveServiceQueryController;
|
|
|
import org.hswebframework.web.exception.BusinessException;
|
|
|
import org.jetlinks.community.media.bean.StreamInfo;
|
|
|
import org.jetlinks.community.media.entity.MediaDevice;
|
|
|
-import org.jetlinks.community.media.gb28181.result.PlayResult;
|
|
|
-import org.jetlinks.community.media.gb28181.result.WVPResult;
|
|
|
+import org.jetlinks.community.media.enums.DeviceState;
|
|
|
import org.jetlinks.community.media.message.MediaMessage;
|
|
|
import org.jetlinks.community.media.message.MediaMessageReply;
|
|
|
import org.jetlinks.community.media.service.LocalMediaDeviceChannelService;
|
|
|
@@ -26,25 +22,17 @@ import org.jetlinks.community.media.service.LocalPlayService;
|
|
|
import org.jetlinks.community.media.session.VideoStreamSessionManager;
|
|
|
import org.jetlinks.community.media.storage.impl.RedisCacheStorageImpl;
|
|
|
import org.jetlinks.community.media.transmit.callback.DeferredResultHolder;
|
|
|
-import org.jetlinks.community.media.transmit.callback.RequestMessage;
|
|
|
import org.jetlinks.community.media.transmit.cmd.SipCommander;
|
|
|
import org.jetlinks.community.utils.SubscribeKeyGenerate;
|
|
|
-import org.jetlinks.core.device.DeviceOperationBroker;
|
|
|
import org.jetlinks.core.device.DeviceRegistry;
|
|
|
import org.jetlinks.core.device.StandaloneDeviceMessageBroker;
|
|
|
import org.jetlinks.core.exception.DeviceOperationException;
|
|
|
import org.jetlinks.core.message.DeviceMessageReply;
|
|
|
-import org.jetlinks.core.server.MessageHandler;
|
|
|
-import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
-import org.springframework.web.context.request.async.DeferredResult;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
-import reactor.util.function.Tuple2;
|
|
|
-
|
|
|
import java.time.Duration;
|
|
|
import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -172,8 +160,11 @@ public class MediaDeviceController implements ReactiveServiceCrudController<Medi
|
|
|
String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + id;
|
|
|
return mediaDeviceService.findById(id)
|
|
|
.switchIfEmpty(Mono.error(new BusinessException("设备已离线,无法更新通道最新信息")))
|
|
|
- .flatMap(device->
|
|
|
- messageBroker.handleReply(id,key,Duration.ofSeconds(10))
|
|
|
+ .flatMap(device->{
|
|
|
+ if (DeviceState.offline==device.getState()) {
|
|
|
+ return Mono.error(new BusinessException("设备已离线,无法更新通道最新信息"));
|
|
|
+ }
|
|
|
+ return messageBroker.handleReply(id,key,Duration.ofSeconds(10))
|
|
|
.onErrorResume(DeviceOperationException.class,error-> {
|
|
|
//设备下线
|
|
|
mediaDeviceService.deviceOffline(device);
|
|
|
@@ -188,7 +179,8 @@ public class MediaDeviceController implements ReactiveServiceCrudController<Medi
|
|
|
})
|
|
|
.then(Mono.empty()))
|
|
|
.flatMap(this::convertReply)
|
|
|
- .singleOrEmpty()
|
|
|
+ .singleOrEmpty();
|
|
|
+ }
|
|
|
);
|
|
|
}
|
|
|
|