Skip to content

Commit a254329

Browse files
candalepfalcon
authored andcommitted
umqtt.simple: Added last will capability.
1 parent 709e2f0 commit a254329

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

umqtt.simple/umqtt/simple.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def __init__(self, client_id, server, port=0, user=None, password=None, keepaliv
2121
self.user = user
2222
self.pswd = password
2323
self.keepalive = keepalive
24+
self.lw_topic = None
25+
self.lw_msg = None
26+
self.lw_qos = 0
27+
self.lw_retain = False
2428

2529
def _send_str(self, s):
2630
self.sock.write(struct.pack("!H", len(s)))
@@ -39,6 +43,14 @@ def _recv_len(self):
3943
def set_callback(self, f):
4044
self.cb = f
4145

46+
def set_last_will(self, topic, msg, retain=False, qos=0):
47+
assert 0 <= qos <= 2
48+
assert topic
49+
self.lw_topic = topic
50+
self.lw_msg = msg
51+
self.lw_qos = qos
52+
self.lw_retain = retain
53+
4254
def connect(self, clean_session=True):
4355
self.sock = socket.socket()
4456
self.sock.connect(self.addr)
@@ -55,9 +67,16 @@ def connect(self, clean_session=True):
5567
assert self.keepalive < 65536
5668
msg[10] |= self.keepalive >> 8
5769
msg[11] |= self.keepalive & 0x00FF
70+
if self.lw_topic:
71+
msg[1] += 2 + len(self.lw_topic) + 2 + len(self.lw_msg)
72+
msg[9] |= 0x4 | (self.lw_qos & 0x1) << 3 | (self.lw_qos & 0x2) << 3
73+
msg[9] |= self.lw_retain << 5
5874
self.sock.write(msg)
5975
#print(hex(len(msg)), hexlify(msg, ":"))
6076
self._send_str(self.client_id)
77+
if self.lw_topic:
78+
self._send_str(self.lw_topic)
79+
self._send_str(self.lw_msg)
6180
if self.user is not None:
6281
self._send_str(self.user)
6382
self._send_str(self.pswd)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy