packages feed

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

-- Generated by haal-gen. Do not edit manually.
module Haal.Models.MQTT.VerneMQTwoClientWillRetain
    ( VerneMQTwoClientWillRetainInput (..)
    , VerneMQTwoClientWillRetainOutput (..)
    , verneMQTwoClientWillRetain
    ) where

import Haal.Automaton.MealyAutomaton (MealyAutomaton, mkMealyAutomatonTable)

data VerneMQTwoClientWillRetainInput
    = In_ConnectC2
    | In_ConnectC1WithWill
    | In_ConnectC1WithWillRetain
    | In_DeleteRetainedC1
    | In_DeleteRetainedC2
    | In_SubscribeC2
    | In_UnSubScribeC2
    | In_DisconnectTCPC1
    | In_DisconnectC1
    deriving (Show, Eq, Ord, Enum, Bounded)

data VerneMQTwoClientWillRetainOutput
    = Out_C1_ConnectionClosed__c2_ConnAck
    | Out_C1_ConnAck__c2_ConnectionClosed
    | Out_C1_ConnectionClosed__c2_ConnectionClosed
    | Out_Empty__c2_ConnAck
    | Out_C1_PubAck__c2_ConnectionClosed
    | Out_Empty__c2_ConnectionClosed
    | Out_C1_ConnAck__Empty
    | Out_C1_ConnectionClosed__Empty
    | Out_C1_ConnectionClosed__c2_PubAck
    | Out_C1_ConnectionClosed__c2_SubAck
    | Out_C1_ConnectionClosed__c2_UnSubAck
    | Out_C1_PubAck__Empty
    | Out_Empty__c2_PubAck
    | Out_Empty__c2_SubAck
    | Out_Empty__c2_UnSubAck
    | Out_C1_ConnectionClosed__c2_SubAck__Pub_c2_my_topic_bye
    | Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
    | Out_Empty__c2_SubAck__Pub_c2_my_topic_bye
    deriving (Show, Eq, Ord, Enum, Bounded)

{- Transitions (state  input -> next state / output):
    0     In_ConnectC2                -> 1 / Out_C1_ConnectionClosed__c2_ConnAck
          In_ConnectC1WithWill        -> 2 / Out_C1_ConnAck__c2_ConnectionClosed
          In_ConnectC1WithWillRetain  -> 3 / Out_C1_ConnAck__c2_ConnectionClosed
          In_DeleteRetainedC1         -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DeleteRetainedC2         -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_SubscribeC2              -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_UnSubScribeC2            -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectTCPC1          -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectC1             -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
    1     In_ConnectC2                -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 4 / Out_C1_ConnAck__Empty
          In_ConnectC1WithWillRetain  -> 5 / Out_C1_ConnAck__Empty
          In_DeleteRetainedC1         -> 1 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC2         -> 1 / Out_C1_ConnectionClosed__c2_PubAck
          In_SubscribeC2              -> 6 / Out_C1_ConnectionClosed__c2_SubAck
          In_UnSubScribeC2            -> 1 / Out_C1_ConnectionClosed__c2_UnSubAck
          In_DisconnectTCPC1          -> 1 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 1 / Out_C1_ConnectionClosed__Empty
    2     In_ConnectC2                -> 4 / Out_Empty__c2_ConnAck
          In_ConnectC1WithWill        -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWillRetain  -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DeleteRetainedC1         -> 2 / Out_C1_PubAck__c2_ConnectionClosed
          In_DeleteRetainedC2         -> 2 / Out_Empty__c2_ConnectionClosed
          In_SubscribeC2              -> 2 / Out_Empty__c2_ConnectionClosed
          In_UnSubScribeC2            -> 2 / Out_Empty__c2_ConnectionClosed
          In_DisconnectTCPC1          -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectC1             -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
    3     In_ConnectC2                -> 5 / Out_Empty__c2_ConnAck
          In_ConnectC1WithWill        -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWillRetain  -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DeleteRetainedC1         -> 3 / Out_C1_PubAck__c2_ConnectionClosed
          In_DeleteRetainedC2         -> 3 / Out_Empty__c2_ConnectionClosed
          In_SubscribeC2              -> 3 / Out_Empty__c2_ConnectionClosed
          In_UnSubScribeC2            -> 3 / Out_Empty__c2_ConnectionClosed
          In_DisconnectTCPC1          -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectC1             -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
    4     In_ConnectC2                -> 2 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 1 / Out_C1_ConnectionClosed__Empty
          In_ConnectC1WithWillRetain  -> 1 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC1         -> 4 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 4 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 7 / Out_Empty__c2_SubAck
          In_UnSubScribeC2            -> 4 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 1 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 1 / Out_C1_ConnectionClosed__Empty
    5     In_ConnectC2                -> 3 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 8 / Out_C1_ConnectionClosed__Empty
          In_ConnectC1WithWillRetain  -> 8 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC1         -> 5 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 5 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 9 / Out_Empty__c2_SubAck
          In_UnSubScribeC2            -> 5 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 8 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 1 / Out_C1_ConnectionClosed__Empty
    6     In_ConnectC2                -> 0 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 7 / Out_C1_ConnAck__Empty
          In_ConnectC1WithWillRetain  -> 9 / Out_C1_ConnAck__Empty
          In_DeleteRetainedC1         -> 6 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC2         -> 6 / Out_C1_ConnectionClosed__c2_PubAck
          In_SubscribeC2              -> 6 / Out_C1_ConnectionClosed__c2_SubAck
          In_UnSubScribeC2            -> 1 / Out_C1_ConnectionClosed__c2_UnSubAck
          In_DisconnectTCPC1          -> 6 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 6 / Out_C1_ConnectionClosed__Empty
    7     In_ConnectC2                -> 2 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 6 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_ConnectC1WithWillRetain  -> 6 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_DeleteRetainedC1         -> 7 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 7 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 7 / Out_Empty__c2_SubAck
          In_UnSubScribeC2            -> 4 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 6 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_DisconnectC1             -> 6 / Out_C1_ConnectionClosed__Empty
    8     In_ConnectC2                -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 11 / Out_C1_ConnAck__Empty
          In_ConnectC1WithWillRetain  -> 12 / Out_C1_ConnAck__Empty
          In_DeleteRetainedC1         -> 8 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC2         -> 1 / Out_C1_ConnectionClosed__c2_PubAck
          In_SubscribeC2              -> 13 / Out_C1_ConnectionClosed__c2_SubAck__Pub_c2_my_topic_bye
          In_UnSubScribeC2            -> 8 / Out_C1_ConnectionClosed__c2_UnSubAck
          In_DisconnectTCPC1          -> 8 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 8 / Out_C1_ConnectionClosed__Empty
    9     In_ConnectC2                -> 3 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 13 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_ConnectC1WithWillRetain  -> 13 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_DeleteRetainedC1         -> 9 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 9 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 9 / Out_Empty__c2_SubAck
          In_UnSubScribeC2            -> 5 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 13 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_DisconnectC1             -> 6 / Out_C1_ConnectionClosed__Empty
    10    In_ConnectC2                -> 8 / Out_C1_ConnectionClosed__c2_ConnAck
          In_ConnectC1WithWill        -> 14 / Out_C1_ConnAck__c2_ConnectionClosed
          In_ConnectC1WithWillRetain  -> 16 / Out_C1_ConnAck__c2_ConnectionClosed
          In_DeleteRetainedC1         -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DeleteRetainedC2         -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_SubscribeC2              -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_UnSubScribeC2            -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectTCPC1          -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectC1             -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
    11    In_ConnectC2                -> 14 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 8 / Out_C1_ConnectionClosed__Empty
          In_ConnectC1WithWillRetain  -> 8 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC1         -> 4 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 4 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 15 / Out_Empty__c2_SubAck__Pub_c2_my_topic_bye
          In_UnSubScribeC2            -> 11 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 8 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 8 / Out_C1_ConnectionClosed__Empty
    12    In_ConnectC2                -> 16 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 8 / Out_C1_ConnectionClosed__Empty
          In_ConnectC1WithWillRetain  -> 8 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC1         -> 5 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 5 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 15 / Out_Empty__c2_SubAck__Pub_c2_my_topic_bye
          In_UnSubScribeC2            -> 12 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 8 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 8 / Out_C1_ConnectionClosed__Empty
    13    In_ConnectC2                -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 15 / Out_C1_ConnAck__Empty
          In_ConnectC1WithWillRetain  -> 15 / Out_C1_ConnAck__Empty
          In_DeleteRetainedC1         -> 13 / Out_C1_ConnectionClosed__Empty
          In_DeleteRetainedC2         -> 6 / Out_C1_ConnectionClosed__c2_PubAck
          In_SubscribeC2              -> 13 / Out_C1_ConnectionClosed__c2_SubAck__Pub_c2_my_topic_bye
          In_UnSubScribeC2            -> 8 / Out_C1_ConnectionClosed__c2_UnSubAck
          In_DisconnectTCPC1          -> 13 / Out_C1_ConnectionClosed__Empty
          In_DisconnectC1             -> 13 / Out_C1_ConnectionClosed__Empty
    14    In_ConnectC2                -> 11 / Out_Empty__c2_ConnAck
          In_ConnectC1WithWill        -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWillRetain  -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DeleteRetainedC1         -> 2 / Out_C1_PubAck__c2_ConnectionClosed
          In_DeleteRetainedC2         -> 14 / Out_Empty__c2_ConnectionClosed
          In_SubscribeC2              -> 14 / Out_Empty__c2_ConnectionClosed
          In_UnSubScribeC2            -> 14 / Out_Empty__c2_ConnectionClosed
          In_DisconnectTCPC1          -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectC1             -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
    15    In_ConnectC2                -> 14 / Out_Empty__c2_ConnectionClosed
          In_ConnectC1WithWill        -> 13 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_ConnectC1WithWillRetain  -> 13 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_DeleteRetainedC1         -> 7 / Out_C1_PubAck__Empty
          In_DeleteRetainedC2         -> 7 / Out_Empty__c2_PubAck
          In_SubscribeC2              -> 15 / Out_Empty__c2_SubAck__Pub_c2_my_topic_bye
          In_UnSubScribeC2            -> 11 / Out_Empty__c2_UnSubAck
          In_DisconnectTCPC1          -> 13 / Out_C1_ConnectionClosed__Pub_c2_my_topic_bye
          In_DisconnectC1             -> 13 / Out_C1_ConnectionClosed__Empty
    16    In_ConnectC2                -> 12 / Out_Empty__c2_ConnAck
          In_ConnectC1WithWill        -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_ConnectC1WithWillRetain  -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DeleteRetainedC1         -> 3 / Out_C1_PubAck__c2_ConnectionClosed
          In_DeleteRetainedC2         -> 16 / Out_Empty__c2_ConnectionClosed
          In_SubscribeC2              -> 16 / Out_Empty__c2_ConnectionClosed
          In_UnSubScribeC2            -> 16 / Out_Empty__c2_ConnectionClosed
          In_DisconnectTCPC1          -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
          In_DisconnectC1             -> 10 / Out_C1_ConnectionClosed__c2_ConnectionClosed
-}
verneMQTwoClientWillRetain :: MealyAutomaton Int VerneMQTwoClientWillRetainInput VerneMQTwoClientWillRetainOutput
verneMQTwoClientWillRetain =
    case mkMealyAutomatonTable 17 0 deltaTable lambdaTable of
        Right m -> m
        Left err -> error ("haal-gen: invalid transition table: " ++ err)
  where
    deltaTable =
        "\1\2\3\0\0\0\0\0\0\
        \\0\4\5\1\1\6\1\1\1\
        \\4\0\0\2\2\2\2\0\0\
        \\5\10\10\3\3\3\3\10\0\
        \\2\1\1\4\4\7\4\1\1\
        \\3\8\8\5\5\9\5\8\1\
        \\0\7\9\6\6\6\1\6\6\
        \\2\6\6\7\7\7\4\6\6\
        \\10\11\12\8\1\13\8\8\8\
        \\3\13\13\9\9\9\5\13\6\
        \\8\14\16\10\10\10\10\10\10\
        \\14\8\8\4\4\15\11\8\8\
        \\16\8\8\5\5\15\12\8\8\
        \\10\15\15\13\6\13\8\13\13\
        \\11\10\10\2\14\14\14\10\10\
        \\14\13\13\7\7\15\11\13\13\
        \\12\10\10\3\16\16\16\10\10"
    lambdaTable =
        "\0\1\1\2\2\2\2\2\2\
        \\2\6\6\7\8\9\10\7\7\
        \\3\2\2\4\5\5\5\2\2\
        \\3\2\2\4\5\5\5\2\2\
        \\5\7\7\11\12\13\14\7\7\
        \\5\7\7\11\12\13\14\7\7\
        \\2\6\6\7\8\9\10\7\7\
        \\5\16\16\11\12\13\14\16\7\
        \\2\6\6\7\8\15\10\7\7\
        \\5\16\16\11\12\13\14\16\7\
        \\0\1\1\2\2\2\2\2\2\
        \\5\7\7\11\12\17\14\7\7\
        \\5\7\7\11\12\17\14\7\7\
        \\2\6\6\7\8\15\10\7\7\
        \\3\2\2\4\5\5\5\2\2\
        \\5\16\16\11\12\17\14\16\7\
        \\3\2\2\4\5\5\5\2\2"