Skip to content

Instantly share code, notes, and snippets.

@danieljoos
Created August 3, 2015 18:11
Show Gist options
  • Save danieljoos/b0970fd265511a37fb2c to your computer and use it in GitHub Desktop.
Save danieljoos/b0970fd265511a37fb2c to your computer and use it in GitHub Desktop.
digraph G {
node [shape=box]
subgraph write_graph {
AsyncRequest -> Serialize [style=dashed arrowhead=vee]
Serialize -> EnqueueRequest [weight=100]
EnqueueRequest -> NextRequest [weight=100]
connectedw [label="connected?" shape="diamond"]
autoconnectw [label="auto connect?" shape="diamond"]
connectedw -> autoconnectw [label="No"]
NextRequest -> connectedw [weight=100]
connectedw -> SendRequest [weight=100 label="Yes"]
SendRequest -> HandleAsyncWriteRequest [weight=100 style=dashed arrowhead=vee]
HandleAsyncWriteRequest -> NextRequest
errorhandlerw [label="Post Error Handler"]
HandleAsyncWriteRequest -> errorhandlerw [color=red]
errorhandlerw -> NextRequest
autoconnectw -> errorhandlerw [weight=100 label="No"]
}
subgraph connect_graph {
"is connecting?" [shape="diamond"]
"is connecting?" -> AutoConnect [weight=100 label="No"]
"is connecting?" -> EnqueueConnectionHandler [label="Yes"]
AutoConnect -> AsyncConnect [weight=100]
AsyncConnect -> HandleAsyncResolve [weight=100 style=dashed arrowhead=vee]
HandleAsyncResolve -> HandleAsyncConnect [weight=100 style=dashed arrowhead=vee]
HandleAsyncConnect -> HandleAsyncAutoConnect [weight=100 style=dashed arrowhead=vee]
HandleAsyncAutoConnect -> AutoConnect [label="next broker" color=red]
}
subgraph read_graph {
EnqueueResponse -> NextResponse [weight=100]
connectedr [label="connected?" shape="diamond"]
autoconnectr [label="auto connect?" shape="diamond"]
connectedr -> autoconnectr [label="No"]
NextResponse -> connectedr [weight=100]
connectedr -> ReceiveResponse [weight=100 label="Yes"]
ReceiveResponse -> HandleAsyncResponseSizeRead [weight=100 style=dashed arrowhead=vee]
HandleAsyncResponseSizeRead -> HandleAsyncResponseRead [weight=100 style=dashed arrowhead=vee]
HandleAsyncResponseRead -> NextResponse
errorhandlerr [label="Post Error Handler"]
HandleAsyncResponseRead -> errorhandlerr [color=red]
errorhandlerr -> NextResponse
autoconnectr -> errorhandlerr [weight=100 label="No"]
}
autoconnectw -> "is connecting?" [label="Yes"]
autoconnectr -> "is connecting?" [label="Yes"]
HandleAsyncAutoConnect -> SendRequest
HandleAsyncAutoConnect -> ReceiveResponse
HandleAsyncWriteRequest -> EnqueueResponse
{ rank=same; EnqueueRequest; EnqueueResponse }
{ rank=same; connectedw; connectedr }
{ rank=same; SendRequest; ReceiveResponse }
{ rank=same; NextRequest; NextResponse }
{ rank=same; HandleAsyncWriteRequest; HandleAsyncResponseSizeRead}
{ rank=same; NextRequest; errorhandlerw}
{ rank=same; NextResponse; errorhandlerr }
{ rank=same; connectedw; autoconnectw }
{ rank=same; connectedr; autoconnectr }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment