[*] 控制信令结构优化
This commit is contained in:
@@ -9,12 +9,12 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import com.acgist.taoyao.boot.config.MediaAudioProperties;
|
import com.acgist.taoyao.boot.config.MediaAudioProperties;
|
||||||
import com.acgist.taoyao.boot.config.MediaVideoProperties;
|
import com.acgist.taoyao.boot.config.MediaVideoProperties;
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.signal.protocol.control.ControlBellProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlBellProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.ControlClientRecordProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlClientRecordProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.ControlConfigAudioProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlConfigAudioProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.ControlConfigVideoProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlConfigVideoProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.ControlPhotographProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlPhotographProtocol;
|
||||||
import com.acgist.taoyao.signal.protocol.control.ControlServerRecordProtocol;
|
import com.acgist.taoyao.signal.protocol.control.IControlServerRecordProtocol;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@@ -34,12 +34,12 @@ import lombok.RequiredArgsConstructor;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ControlController {
|
public class ControlController {
|
||||||
|
|
||||||
private final ControlBellProtocol controlBellProtocol;
|
private final IControlBellProtocol controlBellProtocol;
|
||||||
private final ControlPhotographProtocol controlPhotographProtocol;
|
private final IControlPhotographProtocol controlPhotographProtocol;
|
||||||
private final ControlConfigAudioProtocol controlConfigAudioProtocol;
|
private final IControlConfigAudioProtocol controlConfigAudioProtocol;
|
||||||
private final ControlConfigVideoProtocol controlConfigVideoProtocol;
|
private final IControlConfigVideoProtocol controlConfigVideoProtocol;
|
||||||
private final ControlClientRecordProtocol controlClientRecordProtocol;
|
private final IControlClientRecordProtocol controlClientRecordProtocol;
|
||||||
private final ControlServerRecordProtocol controlServerRecordProtocol;
|
private final IControlServerRecordProtocol controlServerRecordProtocol;
|
||||||
|
|
||||||
@Operation(summary = "响铃", description = "响铃控制")
|
@Operation(summary = "响铃", description = "响铃控制")
|
||||||
@GetMapping("/bell/{clientId}")
|
@GetMapping("/bell/{clientId}")
|
||||||
|
|||||||
@@ -2,9 +2,6 @@ package com.acgist.taoyao.signal.protocol;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.core.task.TaskExecutor;
|
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.config.Constant;
|
import com.acgist.taoyao.boot.config.Constant;
|
||||||
import com.acgist.taoyao.boot.model.Message;
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
import com.acgist.taoyao.boot.model.MessageCodeException;
|
import com.acgist.taoyao.boot.model.MessageCodeException;
|
||||||
@@ -19,9 +16,6 @@ import com.acgist.taoyao.signal.client.ClientType;
|
|||||||
*/
|
*/
|
||||||
public abstract class ProtocolControlAdapter extends ProtocolClientAdapter {
|
public abstract class ProtocolControlAdapter extends ProtocolClientAdapter {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
protected TaskExecutor taskExecutor;
|
|
||||||
|
|
||||||
protected ProtocolControlAdapter(String name, String signal) {
|
protected ProtocolControlAdapter(String name, String signal) {
|
||||||
super(name, signal);
|
super(name, signal);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
"终端->信令服务->终端"
|
"终端->信令服务->终端"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ControlBellProtocol extends ProtocolControlAdapter {
|
public class ControlBellProtocol extends ProtocolControlAdapter implements IControlBellProtocol {
|
||||||
|
|
||||||
private static final String SIGNAL = "control::bell";
|
private static final String SIGNAL = "control::bell";
|
||||||
|
|
||||||
@@ -41,12 +41,7 @@ public class ControlBellProtocol extends ProtocolControlAdapter {
|
|||||||
client.push(targetClient.request(message));
|
client.push(targetClient.request(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @param clientId 终端ID
|
|
||||||
* @param enabled 状态
|
|
||||||
*
|
|
||||||
* @return 执行结果
|
|
||||||
*/
|
|
||||||
public Message execute(String clientId, Boolean enabled) {
|
public Message execute(String clientId, Boolean enabled) {
|
||||||
return this.request(clientId, this.build(Map.of(Constant.ENABLED, enabled)));
|
return this.request(clientId, this.build(Map.of(Constant.ENABLED, enabled)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
"终端=>信令服务->目标终端->信令服务->终端"
|
"终端=>信令服务->目标终端->信令服务->终端"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ControlClientRecordProtocol extends ProtocolControlAdapter {
|
public class ControlClientRecordProtocol extends ProtocolControlAdapter implements IControlClientRecordProtocol {
|
||||||
|
|
||||||
public static final String SIGNAL = "control::client::record";
|
public static final String SIGNAL = "control::client::record";
|
||||||
|
|
||||||
@@ -51,12 +51,7 @@ public class ControlClientRecordProtocol extends ProtocolControlAdapter {
|
|||||||
client.push(targetClient.request(message));
|
client.push(targetClient.request(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @param clientId 终端ID
|
|
||||||
* @param enabled 状态
|
|
||||||
*
|
|
||||||
* @return 执行结果
|
|
||||||
*/
|
|
||||||
public Message execute(String clientId, Boolean enabled) {
|
public Message execute(String clientId, Boolean enabled) {
|
||||||
this.updateRecordStatus(this.clientManager.clients(clientId), enabled);
|
this.updateRecordStatus(this.clientManager.clients(clientId), enabled);
|
||||||
return this.request(clientId, this.build(Map.of(Constant.ENABLED, enabled)));
|
return this.request(clientId, this.build(Map.of(Constant.ENABLED, enabled)));
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
"终端=>信令服务->终端"
|
"终端=>信令服务->终端"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ControlConfigAudioProtocol extends ProtocolControlAdapter {
|
public class ControlConfigAudioProtocol extends ProtocolControlAdapter implements IControlConfigAudioProtocol {
|
||||||
|
|
||||||
public static final String SIGNAL = "control::config::audio";
|
public static final String SIGNAL = "control::config::audio";
|
||||||
|
|
||||||
@@ -42,12 +42,7 @@ public class ControlConfigAudioProtocol extends ProtocolControlAdapter {
|
|||||||
client.push(targetClient.request(message));
|
client.push(targetClient.request(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @param clientId 终端ID
|
|
||||||
* @param mediaAudioProperties 音频配置
|
|
||||||
*
|
|
||||||
* @return 执行结果
|
|
||||||
*/
|
|
||||||
public Message execute(String clientId, MediaAudioProperties mediaAudioProperties) {
|
public Message execute(String clientId, MediaAudioProperties mediaAudioProperties) {
|
||||||
return this.request(clientId, this.build(mediaAudioProperties));
|
return this.request(clientId, this.build(mediaAudioProperties));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
"终端=>信令服务->终端"
|
"终端=>信令服务->终端"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ControlConfigVideoProtocol extends ProtocolControlAdapter {
|
public class ControlConfigVideoProtocol extends ProtocolControlAdapter implements IControlConfigVideoProtocol {
|
||||||
|
|
||||||
public static final String SIGNAL = "control::config::video";
|
public static final String SIGNAL = "control::config::video";
|
||||||
|
|
||||||
@@ -42,12 +42,7 @@ public class ControlConfigVideoProtocol extends ProtocolControlAdapter {
|
|||||||
client.push(targetClient.request(message));
|
client.push(targetClient.request(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @param clientId 终端ID
|
|
||||||
* @param mediaVideoProperties 视频配置
|
|
||||||
*
|
|
||||||
* @return 执行结果
|
|
||||||
*/
|
|
||||||
public Message execute(String clientId, MediaVideoProperties mediaVideoProperties) {
|
public Message execute(String clientId, MediaVideoProperties mediaVideoProperties) {
|
||||||
return this.request(clientId, this.build(mediaVideoProperties));
|
return this.request(clientId, this.build(mediaVideoProperties));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
"终端=>信令服务->目标终端->信令服务->终端"
|
"终端=>信令服务->目标终端->信令服务->终端"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
public class ControlPhotographProtocol extends ProtocolControlAdapter {
|
public class ControlPhotographProtocol extends ProtocolControlAdapter implements IControlPhotographProtocol {
|
||||||
|
|
||||||
public static final String SIGNAL = "control::photograph";
|
public static final String SIGNAL = "control::photograph";
|
||||||
|
|
||||||
@@ -46,11 +46,7 @@ public class ControlPhotographProtocol extends ProtocolControlAdapter {
|
|||||||
client.push(targetClient.request(message));
|
client.push(targetClient.request(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @param clientId 终端标识
|
|
||||||
*
|
|
||||||
* @return 执行结果
|
|
||||||
*/
|
|
||||||
public Message execute(String clientId) {
|
public Message execute(String clientId) {
|
||||||
return this.request(clientId, this.build());
|
return this.request(clientId, this.build());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.Map;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.springframework.context.ApplicationListener;
|
import org.springframework.context.ApplicationListener;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
|
||||||
import com.acgist.taoyao.boot.annotation.Description;
|
import com.acgist.taoyao.boot.annotation.Description;
|
||||||
import com.acgist.taoyao.boot.annotation.Protocol;
|
import com.acgist.taoyao.boot.annotation.Protocol;
|
||||||
@@ -48,7 +49,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolControlAdapter;
|
|||||||
},
|
},
|
||||||
flow = "终端=>信令服务->终端"
|
flow = "终端=>信令服务->终端"
|
||||||
)
|
)
|
||||||
public class ControlServerRecordProtocol extends ProtocolControlAdapter implements ApplicationListener<RecorderCloseEvent> {
|
public class ControlServerRecordProtocol extends ProtocolControlAdapter implements ApplicationListener<RecorderCloseEvent>, IControlServerRecordProtocol {
|
||||||
|
|
||||||
public static final String SIGNAL = "control::server::record";
|
public static final String SIGNAL = "control::server::record";
|
||||||
|
|
||||||
@@ -59,14 +60,11 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
|
|||||||
this.ffmpegProperties = ffmpegProperties;
|
this.ffmpegProperties = ffmpegProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Async
|
@Async
|
||||||
@Override
|
@Override
|
||||||
public void onApplicationEvent(RecorderCloseEvent event) {
|
public void onApplicationEvent(RecorderCloseEvent event) {
|
||||||
// 没有提供接口不能使用注解异步执行
|
final Recorder recorder = event.getRecorder();
|
||||||
this.taskExecutor.execute(() -> {
|
this.stop(recorder.getRoom(), recorder.getClientWrapper());
|
||||||
final Recorder recorder = event.getRecorder();
|
|
||||||
this.stop(recorder.getRoom(), recorder.getClientWrapper());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -85,13 +83,7 @@ public class ControlServerRecordProtocol extends ProtocolControlAdapter implemen
|
|||||||
client.push(message);
|
client.push(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* @param roomId 房间ID
|
|
||||||
* @param clientId 终端ID
|
|
||||||
* @param enabled 状态
|
|
||||||
*
|
|
||||||
* @return 执行结果
|
|
||||||
*/
|
|
||||||
public Message execute(String roomId, String clientId, Boolean enabled) {
|
public Message execute(String roomId, String clientId, Boolean enabled) {
|
||||||
String filepath;
|
String filepath;
|
||||||
final Room room = this.roomManager.room(roomId);
|
final Room room = this.roomManager.room(roomId);
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响铃信令接口
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlBellProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param clientId 终端ID
|
||||||
|
* @param enabled 状态
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String clientId, Boolean enabled);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端录像信令接口
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlClientRecordProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param clientId 终端ID
|
||||||
|
* @param enabled 状态
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String clientId, Boolean enabled);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.config.MediaAudioProperties;
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置音频信令
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlConfigAudioProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param clientId 终端ID
|
||||||
|
* @param mediaAudioProperties 音频配置
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String clientId, MediaAudioProperties mediaAudioProperties);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.config.MediaVideoProperties;
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置视频信令接口
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlConfigVideoProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param clientId 终端ID
|
||||||
|
* @param mediaVideoProperties 视频配置
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String clientId, MediaVideoProperties mediaVideoProperties);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拍照信令接口
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlPhotographProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param clientId 终端标识
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String clientId);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package com.acgist.taoyao.signal.protocol.control;
|
||||||
|
|
||||||
|
import com.acgist.taoyao.boot.model.Message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务端录像信令接口
|
||||||
|
*
|
||||||
|
* @author acgist
|
||||||
|
*/
|
||||||
|
public interface IControlServerRecordProtocol {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param roomId 房间ID
|
||||||
|
* @param clientId 终端ID
|
||||||
|
* @param enabled 状态
|
||||||
|
*
|
||||||
|
* @return 执行结果
|
||||||
|
*/
|
||||||
|
Message execute(String roomId, String clientId, Boolean enabled);
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user