Commit bf10cc1b355acbf247fae16ee31abad7046298d6
Committed by
GitHub
Merge pull request #399 from nikmu/wvp-28181-2.0
修复device_channel的Id改变带来的tree查询bug
Showing
7 changed files
with
21 additions
and
30 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderProvider.java
| @@ -225,7 +225,7 @@ public class SIPRequestHeaderProvider { | @@ -225,7 +225,7 @@ public class SIPRequestHeaderProvider { | ||
| 225 | return request; | 225 | return request; |
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | - public Request createInfoRequest(Device device, StreamInfo streamInfo, String content, Long cseq) | 228 | + public Request createInfoRequest(Device device, StreamInfo streamInfo, String content) |
| 229 | throws PeerUnavailableException, ParseException, InvalidArgumentException { | 229 | throws PeerUnavailableException, ParseException, InvalidArgumentException { |
| 230 | Request request = null; | 230 | Request request = null; |
| 231 | if (streamInfo == null) return null; | 231 | if (streamInfo == null) return null; |
| @@ -255,9 +255,8 @@ public class SIPRequestHeaderProvider { | @@ -255,9 +255,8 @@ public class SIPRequestHeaderProvider { | ||
| 255 | 255 | ||
| 256 | // Forwards | 256 | // Forwards |
| 257 | MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); | 257 | MaxForwardsHeader maxForwards = sipFactory.createHeaderFactory().createMaxForwardsHeader(70); |
| 258 | - if (cseq == null) { | ||
| 259 | - cseq = redisCatchStorage.getCSEQ(Request.INFO); | ||
| 260 | - } | 258 | + |
| 259 | + cseq = redisCatchStorage.getCSEQ(Request.INVITE); | ||
| 261 | // ceq | 260 | // ceq |
| 262 | CSeqHeader cSeqHeader = sipFactory.createHeaderFactory() | 261 | CSeqHeader cSeqHeader = sipFactory.createHeaderFactory() |
| 263 | .createCSeqHeader(cseq, Request.INFO); | 262 | .createCSeqHeader(cseq, Request.INFO); |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
| @@ -1620,7 +1620,7 @@ public class SIPCommander implements ISIPCommander { | @@ -1620,7 +1620,7 @@ public class SIPCommander implements ISIPCommander { | ||
| 1620 | content.append("PAUSE RTSP/1.0\r\n"); | 1620 | content.append("PAUSE RTSP/1.0\r\n"); |
| 1621 | content.append("CSeq: " + cseq + "\r\n"); | 1621 | content.append("CSeq: " + cseq + "\r\n"); |
| 1622 | content.append("PauseTime: now\r\n"); | 1622 | content.append("PauseTime: now\r\n"); |
| 1623 | - Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString(), cseq); | 1623 | + Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString()); |
| 1624 | if (request == null) { | 1624 | if (request == null) { |
| 1625 | return; | 1625 | return; |
| 1626 | } | 1626 | } |
| @@ -1651,7 +1651,7 @@ public class SIPCommander implements ISIPCommander { | @@ -1651,7 +1651,7 @@ public class SIPCommander implements ISIPCommander { | ||
| 1651 | content.append("PLAY RTSP/1.0\r\n"); | 1651 | content.append("PLAY RTSP/1.0\r\n"); |
| 1652 | content.append("CSeq: " + cseq + "\r\n"); | 1652 | content.append("CSeq: " + cseq + "\r\n"); |
| 1653 | content.append("Range: npt=now-\r\n"); | 1653 | content.append("Range: npt=now-\r\n"); |
| 1654 | - Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString(), cseq); | 1654 | + Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString()); |
| 1655 | if (request == null) return; | 1655 | if (request == null) return; |
| 1656 | logger.info(request.toString()); | 1656 | logger.info(request.toString()); |
| 1657 | ClientTransaction clientTransaction = null; | 1657 | ClientTransaction clientTransaction = null; |
| @@ -1680,7 +1680,7 @@ public class SIPCommander implements ISIPCommander { | @@ -1680,7 +1680,7 @@ public class SIPCommander implements ISIPCommander { | ||
| 1680 | content.append("CSeq: " + cseq + "\r\n"); | 1680 | content.append("CSeq: " + cseq + "\r\n"); |
| 1681 | content.append("Range: npt=" + Math.abs(seekTime) + "-\r\n"); | 1681 | content.append("Range: npt=" + Math.abs(seekTime) + "-\r\n"); |
| 1682 | 1682 | ||
| 1683 | - Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString(), cseq); | 1683 | + Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString()); |
| 1684 | if (request == null) return; | 1684 | if (request == null) return; |
| 1685 | logger.info(request.toString()); | 1685 | logger.info(request.toString()); |
| 1686 | ClientTransaction clientTransaction = null; | 1686 | ClientTransaction clientTransaction = null; |
| @@ -1708,7 +1708,7 @@ public class SIPCommander implements ISIPCommander { | @@ -1708,7 +1708,7 @@ public class SIPCommander implements ISIPCommander { | ||
| 1708 | content.append("PLAY RTSP/1.0\r\n"); | 1708 | content.append("PLAY RTSP/1.0\r\n"); |
| 1709 | content.append("CSeq: " + cseq + "\r\n"); | 1709 | content.append("CSeq: " + cseq + "\r\n"); |
| 1710 | content.append("Scale: " + String.format("%.1f",speed) + "\r\n"); | 1710 | content.append("Scale: " + String.format("%.1f",speed) + "\r\n"); |
| 1711 | - Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString(), cseq); | 1711 | + Request request = headerProvider.createInfoRequest(device, streamInfo, content.toString()); |
| 1712 | if (request == null) return; | 1712 | if (request == null) return; |
| 1713 | logger.info(request.toString()); | 1713 | logger.info(request.toString()); |
| 1714 | ClientTransaction clientTransaction = null; | 1714 | ClientTransaction clientTransaction = null; |
src/main/java/com/genersoft/iot/vmp/utils/node/BaseNode.java
| @@ -16,7 +16,7 @@ public class BaseNode<T> implements INode<T> { | @@ -16,7 +16,7 @@ public class BaseNode<T> implements INode<T> { | ||
| 16 | /** | 16 | /** |
| 17 | * 主键ID | 17 | * 主键ID |
| 18 | */ | 18 | */ |
| 19 | - protected int id; | 19 | + protected String channelId; |
| 20 | 20 | ||
| 21 | /** | 21 | /** |
| 22 | * 父节点ID | 22 | * 父节点ID |
| @@ -50,12 +50,8 @@ public class BaseNode<T> implements INode<T> { | @@ -50,12 +50,8 @@ public class BaseNode<T> implements INode<T> { | ||
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | @Override | 52 | @Override |
| 53 | - public int getId() { | ||
| 54 | - return id; | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | - public void setId(int id) { | ||
| 58 | - this.id = id; | 53 | + public String getChannelId() { |
| 54 | + return channelId; | ||
| 59 | } | 55 | } |
| 60 | 56 | ||
| 61 | @Override | 57 | @Override |
| @@ -63,10 +59,6 @@ public class BaseNode<T> implements INode<T> { | @@ -63,10 +59,6 @@ public class BaseNode<T> implements INode<T> { | ||
| 63 | return parentId; | 59 | return parentId; |
| 64 | } | 60 | } |
| 65 | 61 | ||
| 66 | - public void setParentId(String parentId) { | ||
| 67 | - this.parentId = parentId; | ||
| 68 | - } | ||
| 69 | - | ||
| 70 | @Override | 62 | @Override |
| 71 | public List<T> getChildren() { | 63 | public List<T> getChildren() { |
| 72 | return children; | 64 | return children; |
src/main/java/com/genersoft/iot/vmp/utils/node/ForestNode.java
| @@ -15,8 +15,8 @@ public class ForestNode extends BaseNode<ForestNode> { | @@ -15,8 +15,8 @@ public class ForestNode extends BaseNode<ForestNode> { | ||
| 15 | */ | 15 | */ |
| 16 | private Object content; | 16 | private Object content; |
| 17 | 17 | ||
| 18 | - public ForestNode(int id, String parentId, Object content) { | ||
| 19 | - this.id = id; | 18 | + public ForestNode(String id, String parentId, Object content) { |
| 19 | + this.channelId = id; | ||
| 20 | this.parentId = parentId; | 20 | this.parentId = parentId; |
| 21 | this.content = content; | 21 | this.content = content; |
| 22 | } | 22 | } |
src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeManager.java
| @@ -17,15 +17,15 @@ public class ForestNodeManager<T extends INode<T>> { | @@ -17,15 +17,15 @@ public class ForestNodeManager<T extends INode<T>> { | ||
| 17 | /** | 17 | /** |
| 18 | * 森林的所有节点 | 18 | * 森林的所有节点 |
| 19 | */ | 19 | */ |
| 20 | - private final ImmutableMap<Integer, T> nodeMap; | 20 | + private final ImmutableMap<String, T> nodeMap; |
| 21 | 21 | ||
| 22 | /** | 22 | /** |
| 23 | * 森林的父节点ID | 23 | * 森林的父节点ID |
| 24 | */ | 24 | */ |
| 25 | - private final Map<Integer, Object> parentIdMap = Maps.newHashMap(); | 25 | + private final Map<String, Object> parentIdMap = Maps.newHashMap(); |
| 26 | 26 | ||
| 27 | public ForestNodeManager(List<T> nodes) { | 27 | public ForestNodeManager(List<T> nodes) { |
| 28 | - nodeMap = Maps.uniqueIndex(nodes, INode::getId); | 28 | + nodeMap = Maps.uniqueIndex(nodes, INode::getChannelId); |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| @@ -46,7 +46,7 @@ public class ForestNodeManager<T extends INode<T>> { | @@ -46,7 +46,7 @@ public class ForestNodeManager<T extends INode<T>> { | ||
| 46 | * | 46 | * |
| 47 | * @param parentId 父节点ID | 47 | * @param parentId 父节点ID |
| 48 | */ | 48 | */ |
| 49 | - public void addParentId(int parentId) { | 49 | + public void addParentId(String parentId) { |
| 50 | parentIdMap.put(parentId, ""); | 50 | parentIdMap.put(parentId, ""); |
| 51 | } | 51 | } |
| 52 | 52 | ||
| @@ -58,7 +58,7 @@ public class ForestNodeManager<T extends INode<T>> { | @@ -58,7 +58,7 @@ public class ForestNodeManager<T extends INode<T>> { | ||
| 58 | public List<T> getRoot() { | 58 | public List<T> getRoot() { |
| 59 | List<T> roots = new ArrayList<>(); | 59 | List<T> roots = new ArrayList<>(); |
| 60 | nodeMap.forEach((key, node) -> { | 60 | nodeMap.forEach((key, node) -> { |
| 61 | - if (node.getParentId() == null || parentIdMap.containsKey(node.getId())) { | 61 | + if (node.getParentId() == null || parentIdMap.containsKey(node.getChannelId())) { |
| 62 | roots.add(node); | 62 | roots.add(node); |
| 63 | } | 63 | } |
| 64 | }); | 64 | }); |
src/main/java/com/genersoft/iot/vmp/utils/node/ForestNodeMerger.java
| @@ -25,7 +25,7 @@ public class ForestNodeMerger { | @@ -25,7 +25,7 @@ public class ForestNodeMerger { | ||
| 25 | if (node != null) { | 25 | if (node != null) { |
| 26 | node.getChildren().add(forestNode); | 26 | node.getChildren().add(forestNode); |
| 27 | } else { | 27 | } else { |
| 28 | - forestNodeManager.addParentId(forestNode.getId()); | 28 | + forestNodeManager.addParentId(forestNode.getChannelId()); |
| 29 | } | 29 | } |
| 30 | } | 30 | } |
| 31 | }); | 31 | }); |
| @@ -37,8 +37,8 @@ public class ForestNodeMerger { | @@ -37,8 +37,8 @@ public class ForestNodeMerger { | ||
| 37 | items.forEach(forestNode -> { | 37 | items.forEach(forestNode -> { |
| 38 | if (forestNode.getParentId() != null) { | 38 | if (forestNode.getParentId() != null) { |
| 39 | INode<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentId()); | 39 | INode<T> node = forestNodeManager.getTreeNodeAt(forestNode.getParentId()); |
| 40 | - if (CollectionUtil.contains(parentIds, forestNode.getId())){ | ||
| 41 | - forestNodeManager.addParentId(forestNode.getId()); | 40 | + if (CollectionUtil.contains(parentIds, forestNode.getChannelId())){ |
| 41 | + forestNodeManager.addParentId(forestNode.getChannelId()); | ||
| 42 | } else { | 42 | } else { |
| 43 | if (node != null){ | 43 | if (node != null){ |
| 44 | node.getChildren().add(forestNode); | 44 | node.getChildren().add(forestNode); |
src/main/java/com/genersoft/iot/vmp/utils/node/INode.java