Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Timeout.cs
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Threading.Tasks;
5using System.Xml;
6using Waher.Content;
8using Waher.Script;
9
11{
16 {
17 private Duration limit;
18
25 : base(Parent, Model)
26 {
27 }
28
32 public override string LocalName => nameof(Timeout);
33
41 {
42 return new Timeout(Parent, Model);
43 }
44
49 public override Task FromXml(XmlElement Definition)
50 {
51 this.limit = XML.Attribute(Definition, "limit", Duration.Zero);
52
53 return base.FromXml(Definition);
54 }
55
59 public override Task Initialize()
60 {
61 if (this.Parent is Wait Wait)
62 Wait.Register(this);
63
64 return base.Initialize();
65 }
66
72 public override async Task<LinkedListNode<IActivityNode>> Execute(Variables Variables)
73 {
75 return null;
76 }
77
82 public Task GetTask()
83 {
84 DateTime Now = DateTime.Now;
85 DateTime TP = Now + this.limit;
86 double ms = (TP - Now).TotalMilliseconds;
87 if (ms < 0)
88 ms = 0;
89
90 return Task.Delay((int)ms);
91 }
92
100 public void ExportPlantUml(StreamWriter Output, int Indentation, bool First, char QuoteChar)
101 {
102 Indent(Output, Indentation);
103
104 if (First)
105 Output.WriteLine("split");
106 else
107 Output.WriteLine("split again");
108
109 Indentation++;
110 Indent(Output, Indentation);
111
112 Output.Write("#FireBrick:");
113 Values.Duration.ExportText(this.limit, Output);
114 Output.WriteLine("<");
115
116 base.ExportPlantUml(Output, Indentation + 1, QuoteChar);
117 }
118
119 }
120}
Root node of a simulation model
Definition: Model.cs:49
Represents an activity that can be executed as the result of triggered events.
Definition: Activity.cs:17
static async Task ExecuteActivity(Variables Variables, LinkedListNode< IActivityNode > Start)
Executes an activity by executing a possibly branching sequence of nodes.
Definition: Activity.cs:143
Abstract base class for activity nodes
Definition: ActivityNode.cs:15
LinkedListNode< IActivityNode > FirstNode
First child activity node.
Definition: ActivityNode.cs:75
Adds a timeout limit in a Wait statement.
Definition: Timeout.cs:16
Timeout(ISimulationNode Parent, Model Model)
Adds a timeout limit in a Wait statement.
Definition: Timeout.cs:24
void ExportPlantUml(StreamWriter Output, int Indentation, bool First, char QuoteChar)
Exports PlantUML
Definition: Timeout.cs:100
override Task FromXml(XmlElement Definition)
Sets properties and attributes of class in accordance with XML definition.
Definition: Timeout.cs:49
override Task Initialize()
Initialized the node before simulation.
Definition: Timeout.cs:59
Task GetTask()
Gets a task object.
Definition: Timeout.cs:82
override async Task< LinkedListNode< IActivityNode > > Execute(Variables Variables)
Executes a node.
Definition: Timeout.cs:72
override ISimulationNode Create(ISimulationNode Parent, Model Model)
Creates a new instance of the node.
Definition: Timeout.cs:40
override string LocalName
Local name of XML element defining contents of class.
Definition: Timeout.cs:32
Conditional execution in an activity, based on external events.
Definition: Wait.cs:13
void Register(ITriggerNode Node)
Register a trigger node.
Definition: Wait.cs:47
static void Indent(StreamWriter Output, int Indentation)
Adds indentation to the current row.
Helps with common XML-related tasks.
Definition: XML.cs:19
static string Attribute(XmlElement E, string Name)
Gets the value of an XML attribute.
Definition: XML.cs:914
Collection of variables.
Definition: Variables.cs:25
Basic interface for simulator nodes. Implementing this interface allows classes with default contruct...
ISimulationNode Parent
Parent node in the simulation model.
Represents a duration value, as defined by the xsd:duration data type: http://www....
Definition: Duration.cs:13
static readonly Duration Zero
Zero value
Definition: Duration.cs:532