kopia lustrzana https://github.com/Yakifo/amqtt
				
				
				
			
		
			
				
	
	
		
			49 wiersze
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			49 wiersze
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
| # Copyright (c) 2015 Nicolas JOUANIN
 | |
| #
 | |
| # See the file license.txt for copying permission.
 | |
| from hbmqtt.mqtt.packet import MQTTPacket, MQTTFixedHeader, PacketType, PacketIdVariableHeader, MQTTPayload, MQTTVariableHeader
 | |
| from hbmqtt.errors import HBMQTTException
 | |
| from hbmqtt.codecs import *
 | |
| 
 | |
| 
 | |
| class UnubscribePayload(MQTTPayload):
 | |
|     def __init__(self, topics=[]):
 | |
|         super().__init__()
 | |
|         self.topics = topics
 | |
| 
 | |
|     def to_bytes(self, fixed_header: MQTTFixedHeader, variable_header: MQTTVariableHeader):
 | |
|         out = b''
 | |
|         for topic in self.topics:
 | |
|             out += encode_string(topic)
 | |
|         return out
 | |
| 
 | |
|     @classmethod
 | |
|     @asyncio.coroutine
 | |
|     def from_stream(cls, reader: asyncio.StreamReader, fixed_header: MQTTFixedHeader,
 | |
|                     variable_header: MQTTVariableHeader):
 | |
|         topics = []
 | |
|         while True:
 | |
|             try:
 | |
|                 topic = yield from decode_string(reader)
 | |
|                 topics.append(topic)
 | |
|             except NoDataException:
 | |
|                 break
 | |
|         return cls(topics)
 | |
| 
 | |
| 
 | |
| class UnsubscribePacket(MQTTPacket):
 | |
|     VARIABLE_HEADER = PacketIdVariableHeader
 | |
|     PAYLOAD = UnubscribePayload
 | |
| 
 | |
|     def __init__(self, fixed: MQTTFixedHeader=None, variable_header: PacketIdVariableHeader=None, payload=None):
 | |
|         if fixed is None:
 | |
|             header = MQTTFixedHeader(PacketType.UNSUBSCRIBE, 0x00)
 | |
|         else:
 | |
|             if fixed.packet_type is not PacketType.UNSUBSCRIBE:
 | |
|                 raise HBMQTTException("Invalid fixed packet type %s for UnsubscribePacket init" % fixed.packet_type)
 | |
|             header = fixed
 | |
| 
 | |
|         super().__init__(header)
 | |
|         self.variable_header = variable_header
 | |
|         self.payload = payload
 |