File Metadata
File Metadata
- Mime Type
- image/png
- Attributes
- Image
- Storage Engine
- amazon-s3
- Storage Format
- Raw Data
- Storage Handle
- phabricator/ky/xa/l7g6sksjcczxfiri
- Default Alt Text
- mode-monitor-fsm.png (1×1 px, 181 KB)
Event Timeline
Comment Actions
digraph G
{
// state nodes
node[shape=oval;style=filled]
normal[label="Normal"];
ops_requested_resync[label="Ops requested for resync"];
exemptions_requested[label="Exemptions Requested"]
quiets_requested[label="Quiets Requested"]
bans_requested[label="Bans Requested"]
modes_requested[label="Modes Requested"]
Defcon
node[shape=component;style=open]
Resync;
RequestExemptions;
ExemptionReceived;
RequestQuiets;
QuietReceived;
RequestBans;
BanReceived;
RequestModes;
ChannelModeReceived;
Recalculate;
CalculateDelta;
Educate;
Deop;
UpdateState;
node[shape=plain]
// transitions
normal->Resync->ops_requested_resync;
ops_requested_resync->RequestExemptions->exemptions_requested
exemptions_requested->ExemptionReceived->exemptions_requested
exemptions_requested->RequestQuiets->quiets_requested
quiets_requested->QuietReceived->quiets_requested
quiets_requested->RequestBans->bans_requested
bans_requested->BanReceived->bans_requested
bans_requested->RequestModes->modes_requested
modes_requested->ChannelModeReceived->Recalculate;
Recalculate->Deop->normal
Recalculate->UpdateState->Deop;
Recalculate->Defcon;
UpdateState->Defcon;
normal->CalculateDelta->Educate;
Defcon->CalculateDelta;
// INPUTS!
node[shape=parallelogram;style=filled;color="#aaffaa"]
edge[color="#55aa55"]
command->Resync;
irc_join->Resync;
irc_opup->RequestExemptions;
irc_324->ChannelModeReceived; // response to '/mode #channel'
irc_348->ExemptionReceived; // exemption
irc_349->RequestQuiets; // end of exempt
irc_367->BanReceived; // ban
irc_368->RequestModes; // end of ban
irc_728->QuietReceived; // quiet
irc_729->RequestBans; // end of quiet
irc_mode->CalculateDelta[label="if changable state"];
}