kopia lustrzana https://github.com/Yakifo/amqtt
remove state machine
rodzic
8d20a3d95d
commit
3c656ef95b
|
@ -4,6 +4,7 @@
|
||||||
from transitions import Machine, MachineError
|
from transitions import Machine, MachineError
|
||||||
from asyncio import Queue
|
from asyncio import Queue
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
from hbmqtt.mqtt.constants import *
|
||||||
|
|
||||||
|
|
||||||
class PublishMessage:
|
class PublishMessage:
|
||||||
|
@ -15,20 +16,19 @@ class PublishMessage:
|
||||||
self.qos = qos
|
self.qos = qos
|
||||||
self.data = data
|
self.data = data
|
||||||
self.retain = retain
|
self.retain = retain
|
||||||
self._init_states()
|
self.publish_packet = None
|
||||||
|
self.puback_packet = None
|
||||||
|
self.pubrec_packet = None
|
||||||
|
self.pubrel_packet = None
|
||||||
|
self.pubcomp_packet = None
|
||||||
|
|
||||||
def _init_states(self):
|
def is_acknowledged(self):
|
||||||
self.machine = Machine(model=self, states=PublishMessage.states, initial='new')
|
if self.qos == QOS_0:
|
||||||
self.machine.add_transition(trigger='publish', source='new', dest='published')
|
return True
|
||||||
self.machine.add_transition(trigger='publish', source='published', dest='published')
|
if self.qos == QOS_1:
|
||||||
if self.qos == 0x01:
|
return True if self.puback_packet is not None else False
|
||||||
self.machine.add_transition(trigger='acknowledge', source='published', dest='acknowledged')
|
if self.qos == QOS_2:
|
||||||
if self.qos == 0x02:
|
return True if self.pubcomp_packet is not None else False
|
||||||
self.machine.add_transition(trigger='publish', source='received', dest='published')
|
|
||||||
self.machine.add_transition(trigger='publish', source='released', dest='published')
|
|
||||||
self.machine.add_transition(trigger='receive', source='published', dest='received')
|
|
||||||
self.machine.add_transition(trigger='release', source='received', dest='released')
|
|
||||||
self.machine.add_transition(trigger='complete', source='released', dest='completed')
|
|
||||||
|
|
||||||
|
|
||||||
class Session:
|
class Session:
|
||||||
|
|
Ładowanie…
Reference in New Issue