Fixed failures
This commit is contained in:
parent
7218cb2a06
commit
6f0d2d5de4
|
@ -54,11 +54,11 @@ impl VariableByteIntegerEncoder {
|
||||||
loop {
|
loop {
|
||||||
let mut encoded_byte: u8;
|
let mut encoded_byte: u8;
|
||||||
encoded_byte = var_int[i];
|
encoded_byte = var_int[i];
|
||||||
|
i = i + 1;
|
||||||
if (encoded_byte & 128) == 0 {
|
if (encoded_byte & 128) == 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i = i + 1;
|
|
||||||
}
|
}
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
13
src/main.rs
13
src/main.rs
|
@ -4,12 +4,21 @@ use rust_mqtt::packet::property::*;*/
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;*/
|
use std::io::Read;*/
|
||||||
|
|
||||||
|
use rust_mqtt::packet::mqtt_packet::Packet;
|
||||||
|
use rust_mqtt::packet::subscription_packet::SubscriptionPacket;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
env_logger::builder()
|
env_logger::builder()
|
||||||
.filter_level(log::LevelFilter::Info)
|
.filter_level(log::LevelFilter::Info)
|
||||||
.format_timestamp_nanos()
|
.format_timestamp_nanos()
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
|
let mut pckt: SubscriptionPacket<1> = SubscriptionPacket::new();
|
||||||
|
let mut res = vec![0; 14];
|
||||||
|
pckt.encode(&mut res);
|
||||||
|
println!("{:02X?}", res);
|
||||||
|
log::info!("xxx");
|
||||||
|
|
||||||
/*let fl = File::open("/Users/obabec/development/school/rust-mqtt/mqtt_control_example.bin");
|
/*let fl = File::open("/Users/obabec/development/school/rust-mqtt/mqtt_control_example.bin");
|
||||||
|
|
||||||
let mut f = File::open("/Users/obabec/development/school/rust-mqtt/mqtt_control_example.bin").expect("no file found");
|
let mut f = File::open("/Users/obabec/development/school/rust-mqtt/mqtt_control_example.bin").expect("no file found");
|
||||||
|
@ -17,7 +26,7 @@ fn main() {
|
||||||
f.read(&mut buffer).expect("buffer overflow");
|
f.read(&mut buffer).expect("buffer overflow");
|
||||||
|
|
||||||
|
|
||||||
//let mut txt = Vec::new();
|
//
|
||||||
let mut payld = *b"xxxxx";*/
|
let mut payld = *b"xxxxx";*/
|
||||||
//let packet = Packet::clean(txt, &mut payld);
|
//let packet = Packet::clean(txt, &mut payld);
|
||||||
/*let mut buffer_reader = BuffReader::new(&buffer);
|
/*let mut buffer_reader = BuffReader::new(&buffer);
|
||||||
|
|
|
@ -55,7 +55,7 @@ impl Into<u8> for PacketType {
|
||||||
PacketType::Pubrec => 0x50,
|
PacketType::Pubrec => 0x50,
|
||||||
PacketType::Pubrel => 0x60,
|
PacketType::Pubrel => 0x60,
|
||||||
PacketType::Pubcomp => 0x70,
|
PacketType::Pubcomp => 0x70,
|
||||||
PacketType::Subscribe => 0x80,
|
PacketType::Subscribe => 0x82,
|
||||||
PacketType::Suback => 0x90,
|
PacketType::Suback => 0x90,
|
||||||
PacketType::Unsubscribe => 0xA0,
|
PacketType::Unsubscribe => 0xA0,
|
||||||
PacketType::Unsuback => 0xB0,
|
PacketType::Unsuback => 0xB0,
|
||||||
|
|
|
@ -32,9 +32,15 @@ pub struct SubscriptionPacket<'a, const MAX_FILTERS: usize> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, const MAX_FILTERS: usize> SubscriptionPacket<'a, MAX_FILTERS> {
|
impl<'a, const MAX_FILTERS: usize> SubscriptionPacket<'a, MAX_FILTERS> {
|
||||||
/*pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
|
let mut x = Self { fixed_header: PacketType::Subscribe.into(), remain_len: 0, packet_identifier: 1,
|
||||||
}*/
|
property_len: 0, properties: Vec::<Property<'a>, MAX_PROPERTIES>::new(), topic_filter_len: 1, topic_filters: Vec::<TopicFilter<'a>, MAX_FILTERS>::new() };
|
||||||
|
let mut p = TopicFilter::new();
|
||||||
|
p.filter.len = 6;
|
||||||
|
p.filter.string = "test/#";
|
||||||
|
x.topic_filters.push(p);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, const MAX_FILTERS: usize> Packet<'a> for SubscriptionPacket<'a, MAX_FILTERS> {
|
impl<'a, const MAX_FILTERS: usize> Packet<'a> for SubscriptionPacket<'a, MAX_FILTERS> {
|
||||||
|
@ -44,14 +50,23 @@ impl<'a, const MAX_FILTERS: usize> Packet<'a> for SubscriptionPacket<'a, MAX_FIL
|
||||||
let mut rm_ln = self.property_len;
|
let mut rm_ln = self.property_len;
|
||||||
let property_len_enc: [u8; 4] = VariableByteIntegerEncoder::encode(self.property_len).unwrap();
|
let property_len_enc: [u8; 4] = VariableByteIntegerEncoder::encode(self.property_len).unwrap();
|
||||||
let property_len_len = VariableByteIntegerEncoder::len(property_len_enc);
|
let property_len_len = VariableByteIntegerEncoder::len(property_len_enc);
|
||||||
rm_ln = rm_ln + property_len_len as u32 + 4 + self.topic_filter_len as u32;
|
|
||||||
|
let mut lt = 0;
|
||||||
|
let mut filters_len = 0;
|
||||||
|
loop {
|
||||||
|
filters_len = filters_len + self.topic_filters.get(lt).unwrap().filter.len + 3;
|
||||||
|
lt = lt + 1;
|
||||||
|
if lt == self.topic_filter_len as usize {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rm_ln = rm_ln + property_len_len as u32 + 2 + filters_len as u32;
|
||||||
|
|
||||||
buff_writer.write_u8(self.fixed_header);
|
buff_writer.write_u8(self.fixed_header);
|
||||||
buff_writer.write_variable_byte_int(rm_ln);
|
buff_writer.write_variable_byte_int(rm_ln);
|
||||||
buff_writer.write_u16(self.packet_identifier);
|
buff_writer.write_u16(self.packet_identifier);
|
||||||
buff_writer.write_variable_byte_int(self.property_len);
|
buff_writer.write_variable_byte_int(self.property_len);
|
||||||
buff_writer.encode_properties::<MAX_PROPERTIES>(&self.properties);
|
buff_writer.encode_properties::<MAX_PROPERTIES>(&self.properties);
|
||||||
buff_writer.write_u16(self.topic_filter_len);
|
|
||||||
buff_writer.encode_topic_filters_ref(false, self.topic_filter_len as usize, & self.topic_filters);
|
buff_writer.encode_topic_filters_ref(false, self.topic_filter_len as usize, & self.topic_filters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,12 +107,14 @@ impl<'a> BuffWriter<'a> {
|
||||||
|
|
||||||
pub fn encode_properties<const LEN: usize>(& mut self, properties: & Vec<Property<'a>, LEN>) {
|
pub fn encode_properties<const LEN: usize>(& mut self, properties: & Vec<Property<'a>, LEN>) {
|
||||||
let mut i = 0;
|
let mut i = 0;
|
||||||
loop {
|
if properties.len() != 0 {
|
||||||
let prop: &Property = properties.get(i).unwrap();
|
loop {
|
||||||
self.encode_property(prop);
|
let prop: &Property = properties.get(i).unwrap();
|
||||||
i = i + 1;
|
self.encode_property(prop);
|
||||||
if i == LEN {
|
i = i + 1;
|
||||||
break;
|
if i == LEN {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,6 +131,7 @@ impl<'a> BuffWriter<'a> {
|
||||||
loop {
|
loop {
|
||||||
let topic_filter: & TopicFilter<'a> = filters.get(i).unwrap();
|
let topic_filter: & TopicFilter<'a> = filters.get(i).unwrap();
|
||||||
self.encode_topic_filter_ref(sub, topic_filter);
|
self.encode_topic_filter_ref(sub, topic_filter);
|
||||||
|
i = i + 1;
|
||||||
if i == len {
|
if i == len {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user