From 94436de3e1385f22d67ecfc23d0648535d04965a Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 18 四月 2024 18:31:37 +0800
Subject: [PATCH] 临时提交

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java |    3 ++-
 src/main/java/com/genersoft/iot/vmp/service/redisMsg/IRedisRpcService.java                          |    3 ++-
 src/main/java/com/genersoft/iot/vmp/service/redisMsg/service/RedisRpcServiceImpl.java               |    9 +++++++--
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
index ff84fc4..8938468 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/InviteRequestProcessor.java
@@ -780,7 +780,7 @@
             }
         }, userSetting.getPlatformPlayTimeout());
         //
-        redisRpcService.waitePushStreamOnline(sendRtpItem, (sendRtpItemKey) -> {
+        long key = redisRpcService.waitePushStreamOnline(sendRtpItem, (sendRtpItemKey) -> {
             dynamicTask.stop(sendRtpItem.getCallId());
             if (sendRtpItemKey == null) {
                 logger.warn("[绾ц仈鐐规挱] 绛夊緟鎺ㄦ祦寰楀埌缁撴灉鏈┖锛� {}/{}", sendRtpItem.getApp(), sendRtpItem.getStream());
@@ -835,6 +835,7 @@
             if (response.getCode() != 0) {
                 dynamicTask.stop(sendRtpItem.getCallId());
                 redisRpcService.stopWaitePushStreamOnline(sendRtpItem.getRedisKey(), sendRtpItem);
+                redisRpcService.removeCallback(key);
                 try {
                     responseAck(request, Response.TEMPORARILY_UNAVAILABLE, response.getMsg());
                 } catch (SipException | InvalidArgumentException | ParseException e) {
diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/IRedisRpcService.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/IRedisRpcService.java
index 70d53bc..a50ddf0 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/IRedisRpcService.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/IRedisRpcService.java
@@ -12,10 +12,11 @@
 
     WVPResult stopSendRtp(String sendRtpItemKey);
 
-    void waitePushStreamOnline(SendRtpItem sendRtpItem, CommonCallback<String> callback);
+    long waitePushStreamOnline(SendRtpItem sendRtpItem, CommonCallback<String> callback);
 
     void stopWaitePushStreamOnline(String sendRtpItemKey, SendRtpItem sendRtpItem);
 
     void rtpSendStopped(String sendRtpItemKey);
 
+    void removeCallback(long key);
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/service/RedisRpcServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/service/RedisRpcServiceImpl.java
index 75fc1ca..b70e4f9 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/redisMsg/service/RedisRpcServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/redisMsg/service/RedisRpcServiceImpl.java
@@ -84,7 +84,7 @@
     }
 
     @Override
-    public void waitePushStreamOnline(SendRtpItem sendRtpItem, CommonCallback<String> callback) {
+    public long waitePushStreamOnline(SendRtpItem sendRtpItem, CommonCallback<String> callback) {
         logger.info("[璇锋眰鎵�鏈塛VP鐩戝惉娴佷笂绾縘 {}/{}", sendRtpItem.getApp(), sendRtpItem.getStream());
         // 鐩戝惉娴佷笂绾裤�� 娴佷笂绾跨洿鎺ュ彂閫乻endRtpItem娑堟伅缁欏疄闄呯殑淇′护澶勭悊鑰�
         HookSubscribeForStreamChange hook = HookSubscribeFactory.on_stream_changed(
@@ -122,7 +122,7 @@
             }
             hookSubscribe.removeSubscribe(hook);
         });
-
+        return request.getSn();
     }
 
     @Override
@@ -147,4 +147,9 @@
         request.setToId(sendRtpItem.getServerId());
         redisRpcConfig.request(request, 10);
     }
+
+    @Override
+    public void removeCallback(long key) {
+        redisRpcConfig.removeCallback(key);
+    }
 }

--
Gitblit v1.8.0