⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgheaderdiagram-4858.dot

📁 一个著名的SIP协议栈
💻 DOT
字号:
digraph MsgHeaderScannerFSM {
	node[shape=record
		fontsize=8
		fontname="Helvetica"
	]
	edge [ fontsize=6 fontname="Helvetica"]
	graph [ ratio=0.8
		fontsize=6 compound=true ]  MsgStart [ label = "0|MsgStart" ]
    MsgStart -> MsgStart [label="TERM\nSentinel" ]
    MsgStart -> ScanStatusLine [label="*\nStartText" ]
    MsgStart -> ScanStatusLine [label="FName\nStartText" ]
    MsgStart -> ScanStatusLine [label="WS\nStartText" ]
    MsgStart -> ScanStatusLine [label="\":\"\nStartText" ]
    MsgStart -> ScanStatusLine [label="\"\nStartText" ]
    MsgStart -> ScanStatusLine [label="\"<\"\nStartText" ]
    MsgStart -> ScanStatusLine [label="\">\"\nStartText" ]
    MsgStart -> ScanStatusLine [label="\"\\\"\nStartText" ]
    MsgStart -> ScanStatusLine [label="\",\"\nStartText" ]
    MsgStart -> HalfLineBreakAtMsgStart [label="CR\nNone" ]

  HalfLineBreakAtMsgStart [ label = "1|HalfLineBreakAtMsgStart" ]
    HalfLineBreakAtMsgStart -> HalfLineBreakAtMsgStart [label="TERM\nSentinel" ]
    HalfLineBreakAtMsgStart -> MsgStart [label="LF\nNone" ]

  ScanStatusLine [ label = "2|ScanStatusLine" ]
    ScanStatusLine -> ScanStatusLine [label="TERM\nSentinel" ]
    ScanStatusLine -> HalfLineBreakAfterStatusLine [label="CR\nTermStatusLine" ]

  HalfLineBreakAfterStatusLine [ label = "3|HalfLineBreakAfterStatusLine" ]
    HalfLineBreakAfterStatusLine -> HalfLineBreakAfterStatusLine [label="TERM\nSentinel" ]
    HalfLineBreakAfterStatusLine -> AfterLineBreakAfterStatusLine [label="LF\nNone" ]

  AfterLineBreakAfterStatusLine [ label = "4|AfterLineBreakAfterStatusLine" ]
    AfterLineBreakAfterStatusLine -> AfterLineBreakAfterStatusLine [label="TERM\nSentinel" ]
    AfterLineBreakAfterStatusLine -> ScanFieldName [label="FName\nStartText" ]
    AfterLineBreakAfterStatusLine -> HalfLineBreakAfterLineBreak [label="CR\nNone" ]

  ScanFieldName [ label = "5|ScanFieldName" ]
    ScanFieldName -> ScanFieldName [label="TERM\nSentinel" ]
    ScanFieldName -> ScanWhiteSpaceAfter1FieldName [label="WS\nTermFieldName" ]
    ScanFieldName -> ScanWhiteSpaceOr1Value [label="\":\"\nTermFieldName" ]

  ScanWhiteSpaceAfter1FieldName [ label = "6|ScanWhiteSpaceAfter1FieldName" ]
    ScanWhiteSpaceAfter1FieldName -> ScanWhiteSpaceAfter1FieldName [label="TERM\nSentinel" ]
    ScanWhiteSpaceAfter1FieldName -> ScanWhiteSpaceOr1Value [label="\":\"\nNone" ]

  ScanWhiteSpaceAfterNFieldName [ label = "7|ScanWhiteSpaceAfterNFieldName" ]
    ScanWhiteSpaceAfterNFieldName -> ScanWhiteSpaceAfterNFieldName [label="TERM\nSentinel" ]
    ScanWhiteSpaceAfterNFieldName -> ScanWhiteSpaceOrNValue [label="\":\"\nNone" ]

  ScanWhiteSpaceOr1Value [ label = "8|ScanWhiteSpaceOr1Value" ]
    ScanWhiteSpaceOr1Value -> ScanWhiteSpaceOr1Value [label="TERM\nSentinel" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="*\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="FName\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="\":\"\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="\"\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="\"<\"\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="\">\"\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="\"\\\"\nStartText" ]
    ScanWhiteSpaceOr1Value -> Scan1Value [label="\",\"\nStartText" ]
    ScanWhiteSpaceOr1Value -> HalfLineBreakInWhiteSpaceBefore1Value [label="CR\nNone" ]

  ScanWhiteSpaceOrNValue [ label = "9|ScanWhiteSpaceOrNValue" ]
    ScanWhiteSpaceOrNValue -> ScanWhiteSpaceOrNValue [label="TERM\nSentinel" ]
    ScanWhiteSpaceOrNValue -> ScanNValue [label="*\nStartText" ]
    ScanWhiteSpaceOrNValue -> ScanNValue [label="FName\nStartText" ]
    ScanWhiteSpaceOrNValue -> ScanNValue [label="\":\"\nStartText" ]
    ScanWhiteSpaceOrNValue -> ScanNValueInQuotes [label="\"\nStartText" ]
    ScanWhiteSpaceOrNValue -> ScanNValueInAngles [label="\"<\"\nStartText" ]
    ScanWhiteSpaceOrNValue -> ScanNValue [label="\">\"\nStartText" ]
    ScanWhiteSpaceOrNValue -> ScanNValue [label="\"\\\"\nStartText" ]
    ScanWhiteSpaceOrNValue -> HalfLineBreakInWhiteSpaceBeforeNValue [label="CR\nNone" ]

  HalfLineBreakInWhiteSpaceBefore1Value [ label = "10|HalfLineBreakInWhiteSpaceBefore1Value" ]
    HalfLineBreakInWhiteSpaceBefore1Value -> HalfLineBreakInWhiteSpaceBefore1Value [label="TERM\nSentinel" ]
    HalfLineBreakInWhiteSpaceBefore1Value -> AfterLineBreakInWhiteSpaceBefore1Value [label="LF\nNone" ]

  HalfLineBreakInWhiteSpaceBeforeNValue [ label = "11|HalfLineBreakInWhiteSpaceBeforeNValue" ]
    HalfLineBreakInWhiteSpaceBeforeNValue -> HalfLineBreakInWhiteSpaceBeforeNValue [label="TERM\nSentinel" ]
    HalfLineBreakInWhiteSpaceBeforeNValue -> AfterLineBreakInWhiteSpaceBeforeNValue [label="LF\nNone" ]

  AfterLineBreakInWhiteSpaceBefore1Value [ label = "12|AfterLineBreakInWhiteSpaceBefore1Value" ]
    AfterLineBreakInWhiteSpaceBefore1Value -> AfterLineBreakInWhiteSpaceBefore1Value [label="TERM\nSentinel" ]
    AfterLineBreakInWhiteSpaceBefore1Value -> ScanFieldName [label="FName\nBeyondEmptyValue" ]
    AfterLineBreakInWhiteSpaceBefore1Value -> ScanWhiteSpaceOr1Value [label="WS\nNone" ]
    AfterLineBreakInWhiteSpaceBefore1Value -> HalfLineBreakAfterLineBreak [label="CR\nBeyondEmptyValue" ]

  AfterLineBreakInWhiteSpaceBeforeNValue [ label = "13|AfterLineBreakInWhiteSpaceBeforeNValue" ]
    AfterLineBreakInWhiteSpaceBeforeNValue -> AfterLineBreakInWhiteSpaceBeforeNValue [label="TERM\nSentinel" ]
    AfterLineBreakInWhiteSpaceBeforeNValue -> ScanFieldName [label="FName\nBeyondEmptyValue" ]
    AfterLineBreakInWhiteSpaceBeforeNValue -> ScanWhiteSpaceOrNValue [label="WS\nNone" ]
    AfterLineBreakInWhiteSpaceBeforeNValue -> HalfLineBreakAfterLineBreak [label="CR\nBeyondEmptyValue" ]

  Scan1Value [ label = "14|Scan1Value" ]
    Scan1Value -> Scan1Value [label="TERM\nSentinel" ]
    Scan1Value -> HalfLineBreakIn1Value [label="CR\nNone" ]

  ScanNValue [ label = "15|ScanNValue" ]
    ScanNValue -> ScanNValue [label="TERM\nSentinel" ]
    ScanNValue -> ScanNValueInQuotes [label="\"\nNone" ]
    ScanNValue -> ScanNValueInAngles [label="\"<\"\nNone" ]
    ScanNValue -> ScanWhiteSpaceOrNValue [label="\",\"\nTermValue" ]
    ScanNValue -> HalfLineBreakInNValue [label="CR\nNone" ]

  HalfLineBreakIn1Value [ label = "16|HalfLineBreakIn1Value" ]
    HalfLineBreakIn1Value -> HalfLineBreakIn1Value [label="TERM\nSentinel" ]
    HalfLineBreakIn1Value -> AfterLineBreakIn1Value [label="LF\nNone" ]

  HalfLineBreakInNValue [ label = "17|HalfLineBreakInNValue" ]
    HalfLineBreakInNValue -> HalfLineBreakInNValue [label="TERM\nSentinel" ]
    HalfLineBreakInNValue -> AfterLineBreakInNValue [label="LF\nNone" ]

  AfterLineBreakIn1Value [ label = "18|AfterLineBreakIn1Value" ]
    AfterLineBreakIn1Value -> AfterLineBreakIn1Value [label="TERM\nSentinel" ]
    AfterLineBreakIn1Value -> ScanFieldName [label="FName\nTermValueAfterLineBreak" ]
    AfterLineBreakIn1Value -> Scan1Value [label="WS\nNone" ]
    AfterLineBreakIn1Value -> HalfLineBreakAfterLineBreak [label="CR\nTermValueAfterLineBreak" ]

  AfterLineBreakInNValue [ label = "19|AfterLineBreakInNValue" ]
    AfterLineBreakInNValue -> AfterLineBreakInNValue [label="TERM\nSentinel" ]
    AfterLineBreakInNValue -> ScanFieldName [label="FName\nTermValueAfterLineBreak" ]
    AfterLineBreakInNValue -> ScanNValue [label="WS\nNone" ]
    AfterLineBreakInNValue -> HalfLineBreakAfterLineBreak [label="CR\nTermValueAfterLineBreak" ]

  ScanNValueInQuotes [ label = "20|ScanNValueInQuotes" ]
    ScanNValueInQuotes -> ScanNValueInQuotes [label="TERM\nSentinel" ]
    ScanNValueInQuotes -> ScanNValue [label="\"\nNone" ]
    ScanNValueInQuotes -> AfterEscCharInQuotesInNValue [label="\"\\\"\nNone" ]
    ScanNValueInQuotes -> HalfLineBreakInQuotesInNValue [label="CR\nNone" ]

  AfterEscCharInQuotesInNValue [ label = "21|AfterEscCharInQuotesInNValue" ]
    AfterEscCharInQuotesInNValue -> AfterEscCharInQuotesInNValue [label="TERM\nSentinel" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="*\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="FName\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="WS\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\":\"\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\"\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\"<\"\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\">\"\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\"\\\"\nNone" ]
    AfterEscCharInQuotesInNValue -> ScanNValueInQuotes [label="\",\"\nNone" ]

  HalfLineBreakInQuotesInNValue [ label = "22|HalfLineBreakInQuotesInNValue" ]
    HalfLineBreakInQuotesInNValue -> HalfLineBreakInQuotesInNValue [label="TERM\nSentinel" ]
    HalfLineBreakInQuotesInNValue -> AfterLineBreakInQuotesInNValue [label="LF\nNone" ]

  AfterLineBreakInQuotesInNValue [ label = "23|AfterLineBreakInQuotesInNValue" ]
    AfterLineBreakInQuotesInNValue -> AfterLineBreakInQuotesInNValue [label="TERM\nSentinel" ]
    AfterLineBreakInQuotesInNValue -> ScanNValueInQuotes [label="WS\nNone" ]

  ScanNValueInAngles [ label = "24|ScanNValueInAngles" ]
    ScanNValueInAngles -> ScanNValueInAngles [label="TERM\nSentinel" ]
    ScanNValueInAngles -> ScanNValue [label="\">\"\nNone" ]
    ScanNValueInAngles -> HalfLineBreakInAnglesInNValue [label="CR\nNone" ]

  HalfLineBreakInAnglesInNValue [ label = "25|HalfLineBreakInAnglesInNValue" ]
    HalfLineBreakInAnglesInNValue -> HalfLineBreakInAnglesInNValue [label="TERM\nSentinel" ]
    HalfLineBreakInAnglesInNValue -> AfterLineBreakInAnglesInNValue [label="LF\nNone" ]

  AfterLineBreakInAnglesInNValue [ label = "26|AfterLineBreakInAnglesInNValue" ]
    AfterLineBreakInAnglesInNValue -> AfterLineBreakInAnglesInNValue [label="TERM\nSentinel" ]
    AfterLineBreakInAnglesInNValue -> ScanNValueInAngles [label="WS\nNone" ]

  HalfLineBreakAfterLineBreak [ label = "27|HalfLineBreakAfterLineBreak" ]
    HalfLineBreakAfterLineBreak -> HalfLineBreakAfterLineBreak [label="TERM\nSentinel" ]
    HalfLineBreakAfterLineBreak -> MsgStart [label="LF\nEndHeader" ]

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -