Browse Source

devices

main
gsd 4 months ago
parent
commit
8734935270
  1. 18
      dbService.py
  2. 2
      transport_ws.py

18
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 = [

2
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")

Loading…
Cancel
Save