// First value is who is the owner properties,
// second value is what value can be stored in there
// third value is if it is allowed to be stored multiple times
First value is who is the owner properties,
second value is what value can be stored in there
third value is if it is allowed to be stored multiple times
First value is who is the owner properties second value is what value can be stored in there third value is if it is allowed to be stored multiple times
fn auxiliary_data(&self) -> (PropOwner, MqttPropValueType, bool) {
        match self {
            Property::PayloadFormatIndicator => (
                PropOwner::PUBLISH | PropOwner::WILL,
                MqttPropValueType::Byte,
                false,
            ),
            Property::MessageExpiryInterval => (
                PropOwner::PUBLISH | PropOwner::WILL,
                MqttPropValueType::FourBytesInt,
                false,
            ),
            Property::ContentType => (
                PropOwner::PUBLISH | PropOwner::WILL,
                MqttPropValueType::String,
                false,
            ),
            Property::ResponseTopic => (
                PropOwner::PUBLISH | PropOwner::WILL,
                MqttPropValueType::String,
                false,
            ),
            Property::CorrelationData => (
                PropOwner::PUBLISH | PropOwner::WILL,
                MqttPropValueType::Data,
                false,
            ),
            Property::SubscriptionIdentifier => (
                PropOwner::PUBLISH | PropOwner::SUBSCRIBE,
                MqttPropValueType::VarInt,
                false,
            ),
            Property::SessionExpiryInterval => (
                PropOwner::CONNECT | PropOwner::CONNACK | PropOwner::DISCONNECT,
                MqttPropValueType::FourBytesInt,
                false,
            ),
            Property::AssignedClientIdentifier => {
                (PropOwner::CONNACK, MqttPropValueType::String, false)
            }
            Property::ServerKeepAlive => {
                (PropOwner::CONNACK, MqttPropValueType::TwoBytesInt, false)
            }
            Property::AuthenticationMethod => (
                PropOwner::CONNECT | PropOwner::CONNACK | PropOwner::AUTH,
                MqttPropValueType::String,
                false,
            ),
            Property::AuthenticationData => (
                PropOwner::CONNECT | PropOwner::CONNACK | PropOwner::AUTH,
                MqttPropValueType::Data,
                false,
            ),
            Property::RequestProblemInformation => {
                (PropOwner::CONNECT, MqttPropValueType::Bool, false)
            }
            Property::WillDelayInterval => {
                (PropOwner::WILL, MqttPropValueType::FourBytesInt, false)
            }
            Property::RequestResponseInformation => {
                (PropOwner::CONNECT, MqttPropValueType::Bool, false)
            }
            Property::ResponseInformation => (PropOwner::CONNACK, MqttPropValueType::String, false),
            Property::ServerReference => (
                PropOwner::CONNACK | PropOwner::DISCONNECT,
                MqttPropValueType::String,
                false,
            ),
            Property::ReasonString => (
                PropOwner::CONNACK
                    | PropOwner::PUBACK
                    | PropOwner::PUBREC
                    | PropOwner::PUBREL
                    | PropOwner::PUBCOMP
                    | PropOwner::SUBACK
                    | PropOwner::UNSUBACK
                    | PropOwner::DISCONNECT
                    | PropOwner::AUTH,
                MqttPropValueType::String,
                false,
            ),
            Property::ReceiveMaximum => (
                PropOwner::CONNECT | PropOwner::CONNACK,
                MqttPropValueType::TwoBytesInt,
                false,
            ),
            Property::TopicAliasMaximum => (
                PropOwner::CONNECT | PropOwner::CONNACK,
                MqttPropValueType::TwoBytesInt,
                false,
            ),
            Property::TopicAlias => (PropOwner::PUBLISH, MqttPropValueType::TwoBytesInt, false),
            Property::MaximumQoS => (PropOwner::CONNACK, MqttPropValueType::Byte, false),
            Property::RetainAvailable => (PropOwner::CONNACK, MqttPropValueType::Byte, false),
            Property::UserProperty => (
                PropOwner::CONNECT
                    | PropOwner::CONNACK
                    | PropOwner::PUBLISH
                    | PropOwner::WILL
                    | PropOwner::PUBACK
                    | PropOwner::PUBREC
                    | PropOwner::PUBREL
                    | PropOwner::PUBCOMP
                    | PropOwner::SUBSCRIBE
                    | PropOwner::SUBACK
                    | PropOwner::UNSUBSCRIBE
                    | PropOwner::UNSUBACK
                    | PropOwner::DISCONNECT
                    | PropOwner::AUTH,
                MqttPropValueType::String,
                true,
            ),
            Property::MaximumPacketSize => (
                PropOwner::CONNECT | PropOwner::CONNACK,
                MqttPropValueType::FourBytesInt,
                false,
            ),
            Property::WildcardSubscriptionAvailable => {
                (PropOwner::CONNACK, MqttPropValueType::Bool, false)
            }
            Property::SubscriptionIdentifierAvailable => {
                (PropOwner::CONNACK, MqttPropValueType::Bool, false)
            }
            Property::SharedSubscriptionAvailable => {
                (PropOwner::CONNACK, MqttPropValueType::Bool, false)
            }
        }
    }
fn auxiliary_data ( & self ) -> ( PropOwner , MqttPropValueType , bool ) { match self { Property :: PayloadFormatIndicator => ( PropOwner :: PUBLISH | PropOwner :: WILL , MqttPropValueType :: Byte , false , ) , Property :: MessageExpiryInterval => ( PropOwner :: PUBLISH | PropOwner :: WILL , MqttPropValueType :: FourBytesInt , false , ) , Property :: ContentType => ( PropOwner :: PUBLISH | PropOwner :: WILL , MqttPropValueType :: String , false , ) , Property :: ResponseTopic => ( PropOwner :: PUBLISH | PropOwner :: WILL , MqttPropValueType :: String , false , ) , Property :: CorrelationData => ( PropOwner :: PUBLISH | PropOwner :: WILL , MqttPropValueType :: Data , false , ) , Property :: SubscriptionIdentifier => ( PropOwner :: PUBLISH | PropOwner :: SUBSCRIBE , MqttPropValueType :: VarInt , false , ) , Property :: SessionExpiryInterval => ( PropOwner :: CONNECT | PropOwner :: CONNACK | PropOwner :: DISCONNECT , MqttPropValueType :: FourBytesInt , false , ) , Property :: AssignedClientIdentifier => { ( PropOwner :: CONNACK , MqttPropValueType :: String , false ) } Property :: ServerKeepAlive => { ( PropOwner :: CONNACK , MqttPropValueType :: TwoBytesInt , false ) } Property :: AuthenticationMethod => ( PropOwner :: CONNECT | PropOwner :: CONNACK | PropOwner :: AUTH , MqttPropValueType :: String , false , ) , Property :: AuthenticationData => ( PropOwner :: CONNECT | PropOwner :: CONNACK | PropOwner :: AUTH , MqttPropValueType :: Data , false , ) , Property :: RequestProblemInformation => { ( PropOwner :: CONNECT , MqttPropValueType :: Bool , false ) } Property :: WillDelayInterval => { ( PropOwner :: WILL , MqttPropValueType :: FourBytesInt , false ) } Property :: RequestResponseInformation => { ( PropOwner :: CONNECT , MqttPropValueType :: Bool , false ) } Property :: ResponseInformation => ( PropOwner :: CONNACK , MqttPropValueType :: String , false ) , Property :: ServerReference => ( PropOwner :: CONNACK | PropOwner :: DISCONNECT , MqttPropValueType :: String , false , ) , Property :: ReasonString => ( PropOwner :: CONNACK | PropOwner :: PUBACK | PropOwner :: PUBREC | PropOwner :: PUBREL | PropOwner :: PUBCOMP | PropOwner :: SUBACK | PropOwner :: UNSUBACK | PropOwner :: DISCONNECT | PropOwner :: AUTH , MqttPropValueType :: String , false , ) , Property :: ReceiveMaximum => ( PropOwner :: CONNECT | PropOwner :: CONNACK , MqttPropValueType :: TwoBytesInt , false , ) , Property :: TopicAliasMaximum => ( PropOwner :: CONNECT | PropOwner :: CONNACK , MqttPropValueType :: TwoBytesInt , false , ) , Property :: TopicAlias => ( PropOwner :: PUBLISH , MqttPropValueType :: TwoBytesInt , false ) , Property :: MaximumQoS => ( PropOwner :: CONNACK , MqttPropValueType :: Byte , false ) , Property :: RetainAvailable => ( PropOwner :: CONNACK , MqttPropValueType :: Byte , false ) , Property :: UserProperty => ( PropOwner :: CONNECT | PropOwner :: CONNACK | PropOwner :: PUBLISH | PropOwner :: WILL | PropOwner :: PUBACK | PropOwner :: PUBREC | PropOwner :: PUBREL | PropOwner :: PUBCOMP | PropOwner :: SUBSCRIBE | PropOwner :: SUBACK | PropOwner :: UNSUBSCRIBE | PropOwner :: UNSUBACK | PropOwner :: DISCONNECT | PropOwner :: AUTH , MqttPropValueType :: String , true , ) , Property :: MaximumPacketSize => ( PropOwner :: CONNECT | PropOwner :: CONNACK , MqttPropValueType :: FourBytesInt , false , ) , Property :: WildcardSubscriptionAvailable => { ( PropOwner :: CONNACK , MqttPropValueType :: Bool , false ) } Property :: SubscriptionIdentifierAvailable => { ( PropOwner :: CONNACK , MqttPropValueType :: Bool , false ) } Property :: SharedSubscriptionAvailable => { ( PropOwner :: CONNACK , MqttPropValueType :: Bool , false ) } } }
First value is who is the owner properties,
second value is what value can be stored in there
third value is if it is allowed to be stored multiple times
First value is who is the owner properties second value is what value can be stored in there third value is if it is allowed to be stored multiple times
&self