From 8734935270a9efcfa9f4cbfa377f33c30d3cbded Mon Sep 17 00:00:00 2001 From: gsd Date: Wed, 18 Feb 2026 23:27:05 +0300 Subject: [PATCH] devices --- dbService.py | 18 +++++++++--------- transport_ws.py | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dbService.py b/dbService.py index ffa8fb4..c38e987 100644 --- a/dbService.py +++ b/dbService.py @@ -76,9 +76,9 @@ class PacketDbService(MultiDeviceDbSupport): def __init__(self, dbStore, core): super().__init__(dbStore, core) - async def findLastPackets(self, nums: List[int] = [], portnums: List[int] = []): + async def findLastPackets(self, nums: List[int] = [], portnums: List[int] = [], devices = []): pipeline = [] - match = {} + match = {"$or": self.deviceHash2Match(devices)} if nums: match["from"] = {"$in": nums} @@ -194,11 +194,11 @@ class NodeDbService(PacketDbService, MultiDeviceDbSupport): PacketDbService.__init__(self, dbStore, core) MultiDeviceDbSupport.__init__(self, dbStore, core) - async def fillNodeFromPacketCollection(self, l): + async def fillNodeFromPacketCollection(self, l, devices = []): nums = [node.get("num", 0) for node in l] #ищем сначала ноды с позицией 3 портнум - packet_pos_nodes = await self.findLastPackets(nums, [3])#### + packet_pos_nodes = await self.findLastPackets(nums, [3], devices)#### packet_pos_nodes_dict = {}### for packet in packet_pos_nodes: packet_pos_nodes_dict[packet.get("from")] = packet @@ -206,7 +206,7 @@ class NodeDbService(PacketDbService, MultiDeviceDbSupport): #смотрим какие пакеты от нод имеют позицию, и делаем список нод где нет ее nums_without_pos = [fr0m for fr0m in nums if fr0m not in nums_with_pos] - packet_without_pos = await self.findLastPackets(nums_without_pos, [])#### + packet_without_pos = await self.findLastPackets(nums_without_pos, [], devices)#### packet_without_pos_dict = {} for packet in packet_without_pos: packet_without_pos_dict[packet.get("from")] = packet @@ -262,7 +262,7 @@ class NodeDbService(PacketDbService, MultiDeviceDbSupport): collection = self.dbStore['node_info'] c = await collection.aggregate(pipeline) l = await c.to_list() - return await self.fillNodeFromPacketCollection(l) + return await self.fillNodeFromPacketCollection(l, devices) async def listOfDirectNodes(self, devices = []): pipeline = [ #ai slooop @@ -283,7 +283,7 @@ class NodeDbService(PacketDbService, MultiDeviceDbSupport): collection = self.dbStore['node_info'] c = await collection.aggregate(pipeline) l = await c.to_list() - return await self.fillNodeFromPacketCollection(l) + return await self.fillNodeFromPacketCollection(l, devices) async def oneNode(self, num: int, devices = []): collection = self.dbStore['node_info'] @@ -291,7 +291,7 @@ class NodeDbService(PacketDbService, MultiDeviceDbSupport): {"num":int(num), "$or": self.deviceHash2Match(devices)}, sort=[("ts", -1)] ) - l = await self.fillNodeFromPacketCollection([c]) + l = await self.fillNodeFromPacketCollection([c], devices) return l[0] if l.__len__() > 0 else None async def listOfSelectedNodes(self, nums: List[int], devices = []): @@ -310,7 +310,7 @@ class NodeDbService(PacketDbService, MultiDeviceDbSupport): collection = self.dbStore['node_info'] c = await collection.aggregate(pipeline) l = await c.to_list() - return await self.fillNodeFromPacketCollection(l) + return await self.fillNodeFromPacketCollection(l, devices) async def listOfFindLikeName(self, long_name, devices = []): pipeline = [ diff --git a/transport_ws.py b/transport_ws.py index e2cb0f1..23a1d3f 100644 --- a/transport_ws.py +++ b/transport_ws.py @@ -39,7 +39,7 @@ class WSTransport: self.thread = Thread(target=run, daemon=True) self.thread.start() - async def recv(self, packetParse = True): + async def recv(self, packetParse = False): item = await self._recv_q.get() if item is None: raise ConnectionError(self._error or "tcp transport error")