| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -223,9 +223,7 @@ fn parse_connect(i: &[u8]) -> IResult<&[u8], MQTTConnectData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_connack(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTConnackData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_connack(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTConnackData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |i: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, topic_name_compression_response) = be_u8(i)?;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, return_code) = be_u8(i)?;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -244,9 +242,7 @@ where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_publish(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    protocol_version: u8, has_id: bool,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTPublishData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTPublishData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |i: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, topic) = parse_mqtt_string(i)?;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, message_id) = cond(has_id, be_u16)(i)?;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -264,9 +260,7 @@ where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_msgidonly(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTMessageIdOnly>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_msgidonly(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTMessageIdOnly> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |input: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if protocol_version < 5 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // before v5 we don't even have to care about reason codes
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -348,9 +342,7 @@ fn parse_subscribe_topic(i: &[u8]) -> IResult<&[u8], MQTTSubscribeTopicData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_subscribe(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubscribeData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_subscribe(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubscribeData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |i: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, message_id) = be_u16(i)?;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, properties) = parse_properties(i, protocol_version == 5)?;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -367,9 +359,7 @@ where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_suback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubackData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_suback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubackData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |i: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, message_id) = be_u16(i)?;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (qoss, properties) = parse_properties(i, protocol_version == 5)?;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -387,9 +377,7 @@ where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_unsubscribe(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    protocol_version: u8,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubscribeData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubscribeData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |i: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, message_id) = be_u16(i)?;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, properties) = parse_properties(i, protocol_version == 5)?;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -406,9 +394,7 @@ where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_unsuback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubackData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_unsuback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubackData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |i: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, message_id) = be_u16(i)?;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        let (i, properties) = parse_properties(i, protocol_version == 5)?;
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -427,9 +413,7 @@ where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#[inline]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_disconnect(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    remaining_len: usize, protocol_version: u8,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTDisconnectData>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTDisconnectData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |input: &[u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if protocol_version < 5 {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            return Ok((
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -501,9 +485,7 @@ fn parse_auth(i: &[u8]) -> IResult<&[u8], MQTTAuthData> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn parse_remaining_message<'a>(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    full: &'a [u8], len: usize, skiplen: usize, header: FixedHeader, message_type: MQTTTypeCode,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    protocol_version: u8,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&'a [u8]) -> IResult<&'a [u8], MQTTMessage>
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				where
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				) -> impl Fn(&'a [u8]) -> IResult<&'a [u8], MQTTMessage> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    move |input: &'a [u8]| {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        match message_type {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            MQTTTypeCode::CONNECT => match parse_connect(input) {
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |