packages feed

haal-models-0.1.3.0: src/Haal/Models/MQTT/VerneMQSingleClient.hs

-- Generated by haal-gen. Do not edit manually.
module Haal.Models.MQTT.VerneMQSingleClient
    ( VerneMQSingleClientInput (..)
    , VerneMQSingleClientOutput (..)
    , verneMQSingleClient
    ) where

import Haal.Automaton.MealyAutomaton (MealyAutomaton, mkMealyAutomatonTable)

data VerneMQSingleClientInput
    = In_Connect
    | In_PublishQoS0
    | In_PublishQoS1
    | In_PublishRetain
    | In_DeleteRetained
    | In_Subscribe
    | In_UnSubScribe
    | In_SubscribeRetained
    | In_UnSubScribeRetained
    | In_Disconnect
    | In_DisconnectTCP
    deriving (Show, Eq, Ord, Enum, Bounded)

data VerneMQSingleClientOutput
    = Out_ConnAck
    | Out_ConnectionClosed
    | Out_Empty
    | Out_PubAck
    | Out_SubAck
    | Out_UnSubAck
    | Out_Pub_my_topic_messageQos0
    | Out_Pub_my_topic_messageQos1___PubAck
    | Out_SubAck__Pub_my_topic_retained_retained_message
    | Out_Pub_my_topic_retained_retained_message___PubAck
    deriving (Show, Eq, Ord, Enum, Bounded)

{- Transitions (state  input -> next state / output):
    0     In_Connect              -> 1 / Out_ConnAck
          In_PublishQoS0          -> 0 / Out_ConnectionClosed
          In_PublishQoS1          -> 0 / Out_ConnectionClosed
          In_PublishRetain        -> 0 / Out_ConnectionClosed
          In_DeleteRetained       -> 0 / Out_ConnectionClosed
          In_Subscribe            -> 0 / Out_ConnectionClosed
          In_UnSubScribe          -> 0 / Out_ConnectionClosed
          In_SubscribeRetained    -> 0 / Out_ConnectionClosed
          In_UnSubScribeRetained  -> 0 / Out_ConnectionClosed
          In_Disconnect           -> 0 / Out_ConnectionClosed
          In_DisconnectTCP        -> 0 / Out_ConnectionClosed
    1     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 1 / Out_Empty
          In_PublishQoS1          -> 1 / Out_PubAck
          In_PublishRetain        -> 3 / Out_PubAck
          In_DeleteRetained       -> 1 / Out_PubAck
          In_Subscribe            -> 4 / Out_SubAck
          In_UnSubScribe          -> 1 / Out_UnSubAck
          In_SubscribeRetained    -> 5 / Out_SubAck
          In_UnSubScribeRetained  -> 1 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    2     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 2 / Out_ConnectionClosed
          In_PublishQoS1          -> 2 / Out_ConnectionClosed
          In_PublishRetain        -> 2 / Out_ConnectionClosed
          In_DeleteRetained       -> 2 / Out_ConnectionClosed
          In_Subscribe            -> 2 / Out_ConnectionClosed
          In_UnSubScribe          -> 2 / Out_ConnectionClosed
          In_SubscribeRetained    -> 2 / Out_ConnectionClosed
          In_UnSubScribeRetained  -> 2 / Out_ConnectionClosed
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    3     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 3 / Out_Empty
          In_PublishQoS1          -> 3 / Out_PubAck
          In_PublishRetain        -> 3 / Out_PubAck
          In_DeleteRetained       -> 1 / Out_PubAck
          In_Subscribe            -> 6 / Out_SubAck
          In_UnSubScribe          -> 3 / Out_UnSubAck
          In_SubscribeRetained    -> 9 / Out_SubAck__Pub_my_topic_retained_retained_message
          In_UnSubScribeRetained  -> 3 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    4     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 4 / Out_Pub_my_topic_messageQos0
          In_PublishQoS1          -> 4 / Out_Pub_my_topic_messageQos1___PubAck
          In_PublishRetain        -> 6 / Out_PubAck
          In_DeleteRetained       -> 4 / Out_PubAck
          In_Subscribe            -> 4 / Out_SubAck
          In_UnSubScribe          -> 1 / Out_UnSubAck
          In_SubscribeRetained    -> 7 / Out_SubAck
          In_UnSubScribeRetained  -> 4 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    5     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 5 / Out_Empty
          In_PublishQoS1          -> 5 / Out_PubAck
          In_PublishRetain        -> 9 / Out_Pub_my_topic_retained_retained_message___PubAck
          In_DeleteRetained       -> 5 / Out_PubAck
          In_Subscribe            -> 7 / Out_SubAck
          In_UnSubScribe          -> 5 / Out_UnSubAck
          In_SubscribeRetained    -> 5 / Out_SubAck
          In_UnSubScribeRetained  -> 1 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    6     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 6 / Out_Pub_my_topic_messageQos0
          In_PublishQoS1          -> 6 / Out_Pub_my_topic_messageQos1___PubAck
          In_PublishRetain        -> 6 / Out_PubAck
          In_DeleteRetained       -> 4 / Out_PubAck
          In_Subscribe            -> 6 / Out_SubAck
          In_UnSubScribe          -> 3 / Out_UnSubAck
          In_SubscribeRetained    -> 8 / Out_SubAck__Pub_my_topic_retained_retained_message
          In_UnSubScribeRetained  -> 6 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    7     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 7 / Out_Pub_my_topic_messageQos0
          In_PublishQoS1          -> 7 / Out_Pub_my_topic_messageQos1___PubAck
          In_PublishRetain        -> 8 / Out_Pub_my_topic_retained_retained_message___PubAck
          In_DeleteRetained       -> 7 / Out_PubAck
          In_Subscribe            -> 7 / Out_SubAck
          In_UnSubScribe          -> 5 / Out_UnSubAck
          In_SubscribeRetained    -> 7 / Out_SubAck
          In_UnSubScribeRetained  -> 4 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    8     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 8 / Out_Pub_my_topic_messageQos0
          In_PublishQoS1          -> 8 / Out_Pub_my_topic_messageQos1___PubAck
          In_PublishRetain        -> 8 / Out_Pub_my_topic_retained_retained_message___PubAck
          In_DeleteRetained       -> 7 / Out_PubAck
          In_Subscribe            -> 8 / Out_SubAck
          In_UnSubScribe          -> 3 / Out_UnSubAck
          In_SubscribeRetained    -> 8 / Out_SubAck__Pub_my_topic_retained_retained_message
          In_UnSubScribeRetained  -> 6 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
    9     In_Connect              -> 2 / Out_ConnectionClosed
          In_PublishQoS0          -> 9 / Out_Empty
          In_PublishQoS1          -> 9 / Out_PubAck
          In_PublishRetain        -> 9 / Out_Pub_my_topic_retained_retained_message___PubAck
          In_DeleteRetained       -> 5 / Out_PubAck
          In_Subscribe            -> 8 / Out_SubAck
          In_UnSubScribe          -> 9 / Out_UnSubAck
          In_SubscribeRetained    -> 9 / Out_SubAck__Pub_my_topic_retained_retained_message
          In_UnSubScribeRetained  -> 3 / Out_UnSubAck
          In_Disconnect           -> 2 / Out_ConnectionClosed
          In_DisconnectTCP        -> 2 / Out_ConnectionClosed
-}
verneMQSingleClient :: MealyAutomaton Int VerneMQSingleClientInput VerneMQSingleClientOutput
verneMQSingleClient =
    case mkMealyAutomatonTable 10 0 deltaTable lambdaTable of
        Right m -> m
        Left err -> error ("haal-gen: invalid transition table: " ++ err)
  where
    deltaTable =
        "\1\0\0\0\0\0\0\0\0\0\0\
        \\2\1\1\3\1\4\1\5\1\2\2\
        \\2\2\2\2\2\2\2\2\2\2\2\
        \\2\3\3\3\1\6\3\9\3\2\2\
        \\2\4\4\6\4\4\1\7\4\2\2\
        \\2\5\5\9\5\7\5\5\1\2\2\
        \\2\6\6\6\4\6\3\8\6\2\2\
        \\2\7\7\8\7\7\5\7\4\2\2\
        \\2\8\8\8\7\8\3\8\6\2\2\
        \\2\9\9\9\5\8\9\9\3\2\2"
    lambdaTable =
        "\0\1\1\1\1\1\1\1\1\1\1\
        \\1\2\3\3\3\4\5\4\5\1\1\
        \\1\1\1\1\1\1\1\1\1\1\1\
        \\1\2\3\3\3\4\5\8\5\1\1\
        \\1\6\7\3\3\4\5\4\5\1\1\
        \\1\2\3\9\3\4\5\4\5\1\1\
        \\1\6\7\3\3\4\5\8\5\1\1\
        \\1\6\7\9\3\4\5\4\5\1\1\
        \\1\6\7\9\3\4\5\8\5\1\1\
        \\1\2\3\9\3\4\5\8\5\1\1"