Merge async and xmpp work #34

Merged
bmartin5692 merged 20 commits from dev_broken-XMPP into master 2019-05-23 15:22:58 +02:00
5 changed files with 14 additions and 38 deletions
Showing only changes of commit 58919e1cbb - Show all commits

View file

@ -5,7 +5,6 @@ from .mqttserver import MQTTServer
from .mqttserver import MQTTHelperBot
from .xmppserver import XMPPServer
import asyncio
import contextvars
import time
from datetime import datetime, timedelta
import platform
@ -17,10 +16,6 @@ from tinydb import TinyDB, Query
import json
from tinydb.storages import MemoryStorage
bumper_users_var = contextvars.ContextVar("bumper_users", default=[])
bumper_clients_var = contextvars.ContextVar("bumper_clients", default=[])
bumper_bots_var = contextvars.ContextVar("bumper_bots", default=[])
ca_cert = "./certs/CA/cacert.pem"
server_cert = "./certs/cert.pem"
server_key = "./certs/key.pem"
@ -82,15 +77,12 @@ def db_file():
def os_db_path():
db_path = ""
if platform.system() == "Windows":
db_path = os.path.join(os.getenv("APPDATA"))
os.makedirs(os.getenv("APPDATA"), exist_ok=True) #Ensure db_path directory exists or create
return os.path.join(os.getenv("APPDATA"), "bumper.db")
else:
db_path = os.path.expanduser("~/.config")
os.makedirs(db_path, exist_ok=True) #Ensure db_path directory exists or create
return os.path.join(db_path, "bumper.db")
os.makedirs(os.path.expanduser("~/.config"), exist_ok=True) #Ensure db_path directory exists or create
return os.path.expanduser("~/.config/bumper.db")
def db_get():
try:

View file

@ -8,7 +8,6 @@ import bumper
import time
from datetime import datetime, timedelta
import asyncio
import contextvars
from aiohttp import web
import uuid

View file

@ -8,7 +8,6 @@ from hbmqtt.broker import Broker
from hbmqtt.client import MQTTClient
from hbmqtt.mqtt.constants import QOS_0, QOS_1, QOS_2
import pkg_resources
import contextvars
import time
from threading import Thread
import ssl
@ -40,7 +39,7 @@ class MQTTHelperBot:
):
self.address = address
self.client_id = "helper1@bumper/helper1"
self.command_responses = contextvars.ContextVar("command_responses", default=[])
self.command_responses = []
self.helperthread = None
def run(self, run_async=False):
@ -99,10 +98,9 @@ class MQTTHelperBot:
message = await self.Client.deliver_message()
# helperbotlog.debug("HelperBot MQTT Received Message on Topic: {} - Message: {}".format(message.topic, str(message.payload.decode("utf-8"))))
cresp = self.command_responses.get()
if str(message.topic).split("/")[6] == "helper1":
cresp.append(
self.command_responses.append(
{
"time": time.time(),
"topic": message.topic,
@ -111,15 +109,14 @@ class MQTTHelperBot:
)
# Cleanup "expired messages" > 60 seconds from time
for msg in cresp:
for msg in self.command_responses:
expire_time = (
datetime.fromtimestamp(msg["time"]) + timedelta(seconds=10)
).timestamp()
if time.time() > expire_time:
# helperbotlog.debug("Pruning Message Time: {}, MsgTime: {}, MsgTime+60: {}".format(time.time(), msg['time'], expire_time))
cresp.remove(msg)
self.command_responses.remove(msg)
self.command_responses.set(cresp)
# helperbotlog.debug("MQTT Command Response List Count: %s" %len(cresp))
except Exception as e:
@ -132,9 +129,8 @@ class MQTTHelperBot:
while time.time() < t_end:
await asyncio.sleep(0.1)
responses = self.command_responses.get()
if len(responses) > 0:
for msg in responses:
if len(self.command_responses) > 0:
for msg in self.command_responses:
topic = str(msg["topic"]).split("/")
if topic[6] == "helper1" and topic[10] == requestid:
# helperbotlog.debug('VacBot MQTT Response: Topic: %s Payload: %s' % (msg['topic'], msg['payload']))
@ -143,9 +139,7 @@ class MQTTHelperBot:
else:
resppayload = str(msg["payload"])
resp = {"id": requestid, "ret": "ok", "resp": resppayload}
cresp = self.command_responses.get()
cresp.remove(msg)
self.command_responses.set(cresp)
self.command_responses.remove(msg)
return resp
return {"id": requestid, "errno": "timeout", "ret": "fail"}

View file

@ -4,7 +4,6 @@ from threading import Thread
import sys, socket, threading, re, time, logging, uuid, xml.etree.ElementTree as ET
import base64
import ssl
import contextvars
import bumper
import asyncio

View file

@ -51,14 +51,6 @@ def main():
conf_address_8007, usessl=False, helperbot=mqtt_helperbot
)
# add user
# users = bumper.bumper_users_var.get()
# user1 = bumper.BumperUser('user1')
# user1.add_device('devid')
# user1.add_bot('bot_did')
# users.append(user1)
# bumper.bumper_users_var.set(users)
try:
loop = asyncio.get_event_loop()
except: