|
|
|
@ -92,7 +92,7 @@ pub fn parse_mqtt_string_pair(i: &[u8]) -> IResult<&[u8], (String, String)> {
|
|
|
|
// MESSAGE COMPONENTS
|
|
|
|
// MESSAGE COMPONENTS
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_property(i: &[u8]) -> IResult<&[u8], MQTTProperty> {
|
|
|
|
fn parse_property(i: &[u8]) -> IResult<&[u8], MQTTProperty> {
|
|
|
|
let (i, identifier) = parse_mqtt_variable_integer(i)?;
|
|
|
|
let (i, identifier) = parse_mqtt_variable_integer(i)?;
|
|
|
|
let (i, value) = parse_qualified_property(i, identifier)?;
|
|
|
|
let (i, value) = parse_qualified_property(i, identifier)?;
|
|
|
|
Ok((i, value))
|
|
|
|
Ok((i, value))
|
|
|
|
@ -187,7 +187,7 @@ fn parse_connect_variable_flags(i: &[u8]) -> IResult<&[u8], (u8, u8, u8, u8, u8,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_connect(i: &[u8]) -> IResult<&[u8], MQTTConnectData> {
|
|
|
|
fn parse_connect(i: &[u8]) -> IResult<&[u8], MQTTConnectData> {
|
|
|
|
let (i, protocol_string) = parse_mqtt_string(i)?;
|
|
|
|
let (i, protocol_string) = parse_mqtt_string(i)?;
|
|
|
|
let (i, protocol_version) = be_u8(i)?;
|
|
|
|
let (i, protocol_version) = be_u8(i)?;
|
|
|
|
let (i, flags) = parse_connect_variable_flags(i)?;
|
|
|
|
let (i, flags) = parse_connect_variable_flags(i)?;
|
|
|
|
@ -223,7 +223,7 @@ pub fn parse_connect(i: &[u8]) -> IResult<&[u8], MQTTConnectData> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_connack(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTConnackData>
|
|
|
|
fn parse_connack(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTConnackData>
|
|
|
|
where
|
|
|
|
where
|
|
|
|
{
|
|
|
|
{
|
|
|
|
move |i: &[u8]| {
|
|
|
|
move |i: &[u8]| {
|
|
|
|
@ -264,7 +264,7 @@ where
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_msgidonly(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTMessageIdOnly>
|
|
|
|
fn parse_msgidonly(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTMessageIdOnly>
|
|
|
|
where
|
|
|
|
where
|
|
|
|
{
|
|
|
|
{
|
|
|
|
move |input: &[u8]| {
|
|
|
|
move |input: &[u8]| {
|
|
|
|
@ -328,7 +328,7 @@ where
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_msgidonly_v3(i: &[u8]) -> IResult<&[u8], MQTTMessageIdOnly> {
|
|
|
|
fn parse_msgidonly_v3(i: &[u8]) -> IResult<&[u8], MQTTMessageIdOnly> {
|
|
|
|
let (i, message_id) = be_u16(i)?;
|
|
|
|
let (i, message_id) = be_u16(i)?;
|
|
|
|
Ok((
|
|
|
|
Ok((
|
|
|
|
i,
|
|
|
|
i,
|
|
|
|
@ -341,14 +341,14 @@ pub fn parse_msgidonly_v3(i: &[u8]) -> IResult<&[u8], MQTTMessageIdOnly> {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_subscribe_topic(i: &[u8]) -> IResult<&[u8], MQTTSubscribeTopicData> {
|
|
|
|
fn parse_subscribe_topic(i: &[u8]) -> IResult<&[u8], MQTTSubscribeTopicData> {
|
|
|
|
let (i, topic_name) = parse_mqtt_string(i)?;
|
|
|
|
let (i, topic_name) = parse_mqtt_string(i)?;
|
|
|
|
let (i, qos) = be_u8(i)?;
|
|
|
|
let (i, qos) = be_u8(i)?;
|
|
|
|
Ok((i, MQTTSubscribeTopicData { topic_name, qos }))
|
|
|
|
Ok((i, MQTTSubscribeTopicData { topic_name, qos }))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_subscribe(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubscribeData>
|
|
|
|
fn parse_subscribe(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubscribeData>
|
|
|
|
where
|
|
|
|
where
|
|
|
|
{
|
|
|
|
{
|
|
|
|
move |i: &[u8]| {
|
|
|
|
move |i: &[u8]| {
|
|
|
|
@ -367,7 +367,7 @@ where
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_suback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubackData>
|
|
|
|
fn parse_suback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTSubackData>
|
|
|
|
where
|
|
|
|
where
|
|
|
|
{
|
|
|
|
{
|
|
|
|
move |i: &[u8]| {
|
|
|
|
move |i: &[u8]| {
|
|
|
|
@ -385,7 +385,7 @@ where
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_unsubscribe(
|
|
|
|
fn parse_unsubscribe(
|
|
|
|
protocol_version: u8,
|
|
|
|
protocol_version: u8,
|
|
|
|
) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubscribeData>
|
|
|
|
) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubscribeData>
|
|
|
|
where
|
|
|
|
where
|
|
|
|
@ -406,7 +406,7 @@ where
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_unsuback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubackData>
|
|
|
|
fn parse_unsuback(protocol_version: u8) -> impl Fn(&[u8]) -> IResult<&[u8], MQTTUnsubackData>
|
|
|
|
where
|
|
|
|
where
|
|
|
|
{
|
|
|
|
{
|
|
|
|
move |i: &[u8]| {
|
|
|
|
move |i: &[u8]| {
|
|
|
|
@ -485,7 +485,7 @@ where
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
#[inline]
|
|
|
|
pub fn parse_auth(i: &[u8]) -> IResult<&[u8], MQTTAuthData> {
|
|
|
|
fn parse_auth(i: &[u8]) -> IResult<&[u8], MQTTAuthData> {
|
|
|
|
let (i, reason_code) = be_u8(i)?;
|
|
|
|
let (i, reason_code) = be_u8(i)?;
|
|
|
|
let (i, properties) = parse_properties(i, true)?;
|
|
|
|
let (i, properties) = parse_properties(i, true)?;
|
|
|
|
Ok((
|
|
|
|
Ok((
|
|
|
|
|