Skip to content

Commit 6b9e440

Browse files
committed
v1.1.0
1 parent b21f049 commit 6b9e440

18 files changed

+225
-153
lines changed

Examples/Examples.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<ProjectReference Include="..\SimpleStateMachineLibrary\SimpleStateMachineLibrary.csproj" />
15+
<Reference Include="SimpleStateMachineLibrary">
16+
<HintPath>..\SimpleStateMachineLibrary\bin\Release\netstandard2.1\SimpleStateMachineLibrary.dll</HintPath>
17+
</Reference>
1618
</ItemGroup>
1719

1820
</Project>

Examples/Program.cs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
1-
using System;
1+
using SimpleStateMachineLibrary;
2+
using System;
23
using System.Collections.Generic;
3-
using Microsoft.Extensions.Logging;
4-
using SimpleStateMachineLibrary;
54

65
namespace Examples
76
{
87
class Program
98
{
10-
static void Method1(State state, Dictionary<string, object> parameters)
9+
static void Action1(State state, Dictionary<string, object> parameters)
1110
{
1211
state.StateMachine.InvokeTransition("Transition1");
1312
}
14-
static void Method2(State state, Dictionary<string, object> parameters)
13+
static void Action2(State state, Dictionary<string, object> parameters)
1514
{
1615
state.StateMachine.InvokeTransition("Transition2");
1716
}
18-
static void Method3(State state, Dictionary<string, object> parameters)
17+
static void Action3(State state, Dictionary<string, object> parameters)
1918
{
2019
state.StateMachine.InvokeTransition("Transition3");
2120
}
22-
static void Method4(State state, Dictionary<string, object> parameters)
21+
static void Action4(State state, Dictionary<string, object> parameters)
2322
{
2423

2524
}
@@ -44,12 +43,12 @@ static void Main(string[] args)
4443

4544
//To state
4645
Transition transition3 = state4.AddTransitionToThis("Transition3", state3);
47-
46+
4847
//Add action on entry or/and exit
49-
state1.OnExit(Method1);
50-
state2.OnEntry(Method2);
51-
state3.OnExit(Method3);
52-
state4.OnExit(Method4);
48+
state1.OnExit(Action1);
49+
state2.OnEntry(Action2);
50+
state3.OnExit(Action3);
51+
state4.OnExit(Action4);
5352

5453
//Set start state
5554
state1.SetAsStartState();

SimpleStateMachineLibrary/Data/Data.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,17 @@ public object Value
1919

2020
private Action<Data, object, object> _onChange;
2121

22-
public Data OnChange(Action<Data, object, object> actionOnChange)
23-
{
24-
_onChange += actionOnChange;
25-
this.StateMachine._logger?.LogDebugAndInformation("Method \"{NameMethod}\" subscribe on change data \"{NameData}\"", actionOnChange.Method.Name, this.Name);
26-
return this;
27-
}
28-
29-
protected internal Data(StateMachine stateMachine, string nameData, object valueData = null) : base(stateMachine, nameData)
22+
internal Data(StateMachine stateMachine, string nameData, object valueData, Action<Data, object, object> actionOnChange) : base(stateMachine, nameData)
3023
{
3124
Value = valueData;
3225

3326
stateMachine?._logger?.LogDebug("Create data \"{NameData}\" ", nameData);
3427

28+
if (actionOnChange != null)
29+
{
30+
OnChange(actionOnChange);
31+
}
32+
3533
stateMachine.AddData(this, out bool result, true);
3634
}
3735

@@ -44,5 +42,14 @@ public Data TryDelete(out bool result)
4442
{
4543
return this.StateMachine.TryDeleteData(this, out result);
4644
}
45+
46+
public Data OnChange(Action<Data, object, object> actionOnChange)
47+
{
48+
actionOnChange = Check.Object(actionOnChange, this.StateMachine?._logger);
49+
50+
_onChange += actionOnChange;
51+
this.StateMachine._logger?.LogDebugAndInformation("Method \"{NameMethod}\" subscribe on change data \"{NameData}\"", actionOnChange.Method.Name, this.Name);
52+
return this;
53+
}
4754
}
4855
}

SimpleStateMachineLibrary/Data/DataWorkWithXML.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace SimpleStateMachineLibrary
77
{
88
public partial class Data
99
{
10-
public static XElement ToXElement(Data data)
10+
internal static XElement ToXElement(Data data)
1111
{
1212
Check.NamedObject(data, data?.StateMachine?._logger);
1313
XElement element = new XElement("Data");
@@ -17,12 +17,12 @@ public static XElement ToXElement(Data data)
1717
return element;
1818
}
1919

20-
public XElement ToXElement()
20+
internal XElement ToXElement()
2121
{
2222
return Data.ToXElement(this);
2323
}
2424

25-
public static Data FromXElement(StateMachine stateMachine, XElement data)
25+
internal static Data FromXElement(StateMachine stateMachine, XElement data)
2626
{
2727
stateMachine = Check.Object(stateMachine, stateMachine?._logger);
2828
data = Check.Object(data, stateMachine?._logger);

SimpleStateMachineLibrary/Helpers/NamedObject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public abstract class NamedObject
77

88
public StateMachine StateMachine { get; }
99

10-
protected internal NamedObject(StateMachine stateMachine, string nameObject)
10+
internal NamedObject(StateMachine stateMachine, string nameObject)
1111
{
1212
Name = Check.Name(nameObject, stateMachine?._logger);
1313
StateMachine = Check.Object(stateMachine, stateMachine?._logger);

SimpleStateMachineLibrary/SimpleStateMachineLibrary.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1010
<PackageTags>statemachine state-machine finite-state-machine</PackageTags>
1111
<PackageProjectUrl>https://github.com/SimpleStateMachine/SimpleStateMachineLibrary</PackageProjectUrl>
12+
<Version>1.0.1</Version>
1213
</PropertyGroup>
1314

1415
<ItemGroup>

SimpleStateMachineLibrary/StateMachines/StateMachine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public State SetStartState(State state)
8080

8181
public State SetStartState(string stateName)
8282
{
83-
StartState = State(stateName);
83+
StartState = GetState(stateName);
8484

8585
_logger?.LogDebug("State \"{NameState}\" set as start", stateName);
8686

SimpleStateMachineLibrary/StateMachines/StateMachineWorkWithData.cs

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
using Microsoft.Extensions.Logging;
22
using SimpleStateMachineLibrary.Helpers;
3+
using System;
34
using System.Xml.Linq;
45

56
namespace SimpleStateMachineLibrary
67
{
78
public partial class StateMachine
89
{
910

10-
private Data _Data(string nameData, out bool result, bool exception)
11+
private Data _GetData(string nameData, out bool result, bool exception)
1112
{
1213
var data_ = Check.GetElement(_data, nameData, this._logger, out result, exception);
1314

@@ -19,7 +20,7 @@ private Data _Data(string nameData, out bool result, bool exception)
1920
return data_;
2021
}
2122

22-
private Data _Data(Data data, out bool result, bool exception)
23+
private Data _GetData(Data data, out bool result, bool exception)
2324
{
2425
var data_ = Check.GetElement(_data, data, this._logger, out result, exception);
2526

@@ -31,31 +32,33 @@ private Data _Data(Data data, out bool result, bool exception)
3132
return data_;
3233
}
3334

34-
public Data Data(string nameData)
35+
36+
public Data GetData(string nameData)
3537
{
36-
return _Data(nameData, out bool result, true);
38+
return _GetData(nameData, out bool result, true);
3739
}
3840

3941
public Data TryGetData(string nameData, out bool result)
4042
{
41-
return _Data(nameData, out result, false);
43+
return _GetData(nameData, out result, false);
4244
}
4345

4446
public Data TryGetData(Data data, out bool result)
4547
{
46-
return _Data(data, out result, false);
48+
return _GetData(data, out result, false);
4749
}
4850

4951

50-
private Data _AddData(string nameData, object valueData, out bool result, bool exception)
52+
53+
internal Data _AddData(string nameData, object valueData, Action<Data, object, object> actionOnChange, out bool result, bool exception)
5154
{
5255
//throw that element already contains
5356
result = Check.NotContains(_data, nameData, this._logger, exception);
5457

5558
if (!result)
5659
return null;
5760

58-
return new Data(this, nameData, valueData);
61+
return new Data(this, nameData, valueData, actionOnChange);
5962
}
6063

6164
internal Data AddData(Data data, out bool result, bool exception)
@@ -76,21 +79,24 @@ internal Data AddData(Data data, out bool result, bool exception)
7679
return data;
7780
}
7881

79-
public Data AddData(string nameData, object valueData = default(object))
82+
internal Data AddData(XElement xElement)
8083
{
81-
return _AddData(nameData, valueData, out bool result, true);
84+
return SimpleStateMachineLibrary.Data.FromXElement(this, Check.Object(xElement, this._logger));
8285
}
8386

84-
public Data TryAddData(out bool result, string nameData, object valueData = default(object))
87+
88+
public Data AddData(string nameData, object valueData = default(object), Action<Data, object, object> actionOnChange = null)
8589
{
86-
return _AddData(nameData, valueData, out result, false);
90+
return _AddData(nameData, valueData, actionOnChange, out bool result, true);
8791
}
8892

89-
public Data AddData(XElement xElement)
93+
public Data TryAddData(out bool result, string nameData, object valueData = default(object), Action<Data, object, object> actionOnChange = null)
9094
{
91-
return SimpleStateMachineLibrary.Data.FromXElement(this, Check.Object(xElement, this._logger));
95+
return _AddData(nameData, valueData, actionOnChange, out result, false);
9296
}
9397

98+
99+
94100
private Data _DeleteData(Data data, out bool result, bool exception)
95101
{
96102
var data_ = Check.Remove(_data, data, this._logger, out result, exception);
@@ -116,6 +122,7 @@ private Data _DeleteData(string dataName, out bool result, bool exception)
116122
return data_;
117123
}
118124

125+
119126
public Data DeleteData(string nameData)
120127
{
121128
return _DeleteData(nameData, out bool result, true);

SimpleStateMachineLibrary/StateMachines/StateMachineWorkWithStates.cs

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
using Microsoft.Extensions.Logging;
22
using SimpleStateMachineLibrary.Helpers;
3+
using System;
4+
using System.Collections.Generic;
35
using System.Xml.Linq;
46

57

68
namespace SimpleStateMachineLibrary
79
{
810
public partial class StateMachine
911
{
10-
private State _State(string nameState, out bool result, bool exception)
12+
private State _GetState(string nameState, out bool result, bool exception)
1113
{
1214
var _state = Check.GetElement(_states, nameState, this._logger, out result, exception);
1315

@@ -19,35 +21,38 @@ private State _State(string nameState, out bool result, bool exception)
1921
return _state;
2022
}
2123

22-
private State _State(State state, out bool result, bool exception)
23-
{
24-
var _state = Check.GetElement(_states, state, this._logger, out result, exception);
24+
//private State _GetState(State state, out bool result, bool exception)
25+
//{
26+
// var _state = Check.GetElement(_states, state, this._logger, out result, exception);
2527

26-
if (exception)
27-
_logger?.LogDebug("Get state \"{NameState}\"", state.Name);
28-
else
29-
_logger?.LogDebug("Try get state \"{NameState}\"", state.Name);
28+
// if (exception)
29+
// _logger?.LogDebug("Get state \"{NameState}\"", state.Name);
30+
// else
31+
// _logger?.LogDebug("Try get state \"{NameState}\"", state.Name);
3032

3133

32-
return _state;
33-
}
34+
// return _state;
35+
//}
36+
3437

35-
public State State(string nameState, bool exception = true)
38+
public State GetState(string nameState)
3639
{
37-
return _State(nameState, out bool result, exception);
40+
return _GetState(nameState, out bool result, true);
3841
}
3942

4043
public State TryGetState(string nameState, out bool result)
4144
{
42-
return _State(nameState, out result, false);
45+
return _GetState(nameState, out result, false);
4346
}
4447

45-
public State TryGetState(State state, out bool result)
46-
{
47-
return _State(state, out result, false);
48-
}
48+
//public State TryGetState(State state, out bool result)
49+
//{
50+
// return _GetState(state, out result, false);
51+
//}
4952

50-
private State _AddState(string nameState, out bool result, bool exception)
53+
54+
55+
internal State _AddState(string nameState, Action<State, Dictionary<string, object>> actionOnEntry, Action<State, Dictionary<string, object>> actionOnExit, out bool result, bool exception)
5156
{
5257
//throw that element already contains
5358
result = Check.NotContains(_states, nameState, this._logger, exception);
@@ -56,8 +61,9 @@ private State _AddState(string nameState, out bool result, bool exception)
5661
if (!result)
5762
return null;
5863

59-
return new State(this, nameState);
64+
return new State(this, nameState, actionOnEntry, actionOnExit);
6065
}
66+
6167
internal State AddState(State state, out bool result, bool exception)
6268
{
6369
//throw that element already contains
@@ -76,22 +82,24 @@ internal State AddState(State state, out bool result, bool exception)
7682
return state;
7783
}
7884

79-
public State AddState(string nameState)
85+
internal State AddState(XElement xElement)
8086
{
81-
return _AddState(nameState, out bool result, true);
87+
return SimpleStateMachineLibrary.State.FromXElement(this, Check.Object(xElement, this._logger));
8288
}
8389

84-
public State AddState(XElement xElement)
90+
91+
public State AddState(string nameState, Action<State, Dictionary<string, object>> actionOnEntry = null, Action<State, Dictionary<string, object>> actionOnExit = null)
8592
{
86-
return SimpleStateMachineLibrary.State.FromXElement(this, Check.Object(xElement, this._logger));
93+
return _AddState(nameState, actionOnEntry, actionOnExit, out bool result, true);
8794
}
8895

89-
public State TryAddState(string nameState, out bool result)
96+
public State TryAddState(out bool result, string nameState, Action<State, Dictionary<string, object>> actionOnEntry = null, Action<State, Dictionary<string, object>> actionOnExit = null)
9097
{
91-
return _AddState(nameState, out result, false);
98+
return _AddState(nameState, actionOnEntry, actionOnExit, out result, false);
9299
}
93100

94101

102+
95103
private State _DeleteState(State state, out bool result, bool exception)
96104
{
97105

@@ -118,14 +126,15 @@ private State _DeleteState(string stateName, out bool result, bool exception)
118126
return _state;
119127
}
120128

129+
121130
public State DeleteState(State state)
122131
{
123132
return _DeleteState(state, out bool result, true);
124133
}
125134

126135
public State DeleteState(string stateName)
127136
{
128-
return _DeleteState(State(stateName), out bool result, true);
137+
return _DeleteState(GetState(stateName), out bool result, true);
129138
}
130139

131140
public State TryDeleteState(State state, out bool result)

0 commit comments

Comments
 (0)