Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
TokenProperty.cs
1using System;
2using System.Threading.Tasks;
3using System.Xml;
5
7{
11 public enum TokenProperties
12 {
16 TokenId,
17
21 TokenIdMethod,
22
26 Visibility,
27
31 Creator,
32
36 CreatorJid,
37
41 Owner,
42
46 OwnerJid,
47
51 TrustProvider,
52
56 TrustProviderJid,
57
61 Currency,
62
66 Reference,
67
71 Definition,
72
76 DefinitionNamespace,
77
81 CreationContract,
82
86 CreationContractTemplate,
87
91 OwnershipContract,
92
96 Value,
97
101 Created,
102
106 Updated,
107
111 Expires,
112
116 ArchiveRequired,
117
121 ArchiveOptional,
122
126 SignatureTimestamp,
127
131 Signature,
132
136 DefinitionSchemaDigest,
137
141 DefinitionSchemaHashFunction,
142
146 CreatorCanDestroy,
147
151 OwnerCanDestroyBatch,
152
156 OwnerCanDestroyIndividual,
157
161 CertifierCanDestroy,
162
166 FriendlyName,
167
171 Glyph,
172
176 GlyphContentType,
177
181 GlyphWidth,
182
186 GlyphHeight,
187
191 Ordinal,
192
196 BatchSize
197 }
198
203 {
208 : base()
209 {
210 }
211
215 public TokenProperties Value { get; set; }
216
220 public override string LocalName => nameof(TokenProperty);
221
226 public override IStateMachineNode Create()
227 {
228 return new TokenProperty();
229 }
230
235 public override Task Parse(XmlElement Xml)
236 {
237 if (!Enum.TryParse<TokenProperties>(Xml.InnerText, out TokenProperties p))
238 throw new StateMachineException(this.StateMachine, "Invalid Token Property value.");
239
240 this.Value = p;
241
242 return base.Parse(Xml);
243 }
244
249 public override Task<object> Evaluate(EvaluationArguments Arguments)
250 {
251 if (Arguments.Token is null)
252 throw new StateMachineException(Arguments.Machine, "State Machine does not have single token owner.");
253
254 switch (this.Value)
255 {
256 case TokenProperties.TokenId: return Task.FromResult<object>(Arguments.Token.TokenId);
257 case TokenProperties.TokenIdMethod: return Task.FromResult<object>(Arguments.Token.TokenIdMethod);
258 case TokenProperties.Visibility: return Task.FromResult<object>(Arguments.Token.Visibility);
259 case TokenProperties.Creator: return Task.FromResult<object>(Arguments.Token.Creator);
260 case TokenProperties.CreatorJid: return Task.FromResult<object>(Arguments.Token.CreatorJid);
261 case TokenProperties.Owner: return Task.FromResult<object>(Arguments.Token.Owner);
262 case TokenProperties.OwnerJid: return Task.FromResult<object>(Arguments.Token.OwnerJid);
263 case TokenProperties.TrustProvider: return Task.FromResult<object>(Arguments.Token.TrustProvider);
264 case TokenProperties.TrustProviderJid: return Task.FromResult<object>(Arguments.Token.TrustProviderJid);
265 case TokenProperties.Currency: return Task.FromResult<object>(Arguments.Token.Currency);
266 case TokenProperties.Reference: return Task.FromResult<object>(Arguments.Token.Reference);
267 case TokenProperties.Definition: return Task.FromResult<object>(Arguments.Token.Definition);
268 case TokenProperties.DefinitionNamespace: return Task.FromResult<object>(Arguments.Token.DefinitionNamespace);
269 case TokenProperties.CreationContract: return Task.FromResult<object>(Arguments.Token.CreationContract);
270 case TokenProperties.CreationContractTemplate: return Task.FromResult<object>(Arguments.Token.CreationContractTemplate);
271 case TokenProperties.OwnershipContract: return Task.FromResult<object>(Arguments.Token.OwnershipContract);
272 case TokenProperties.Value: return Task.FromResult<object>(Arguments.Token.Value);
273 case TokenProperties.Created: return Task.FromResult<object>(Arguments.Token.Created);
274 case TokenProperties.Updated: return Task.FromResult<object>(Arguments.Token.Updated);
275 case TokenProperties.Expires: return Task.FromResult<object>(Arguments.Token.Expires);
276 case TokenProperties.ArchiveRequired: return Task.FromResult<object>(Arguments.Token.ArchiveRequired);
277 case TokenProperties.ArchiveOptional: return Task.FromResult<object>(Arguments.Token.ArchiveOptional);
278 case TokenProperties.SignatureTimestamp: return Task.FromResult<object>(Arguments.Token.SignatureTimestamp);
279 case TokenProperties.Signature: return Task.FromResult<object>(Arguments.Token.Signature);
280 case TokenProperties.DefinitionSchemaDigest: return Task.FromResult<object>(Arguments.Token.DefinitionSchemaDigest);
281 case TokenProperties.DefinitionSchemaHashFunction: return Task.FromResult<object>(Arguments.Token.DefinitionSchemaHashFunction);
282 case TokenProperties.CreatorCanDestroy: return Task.FromResult<object>(Arguments.Token.CreatorCanDestroy);
283 case TokenProperties.OwnerCanDestroyBatch: return Task.FromResult<object>(Arguments.Token.OwnerCanDestroyBatch);
284 case TokenProperties.OwnerCanDestroyIndividual: return Task.FromResult<object>(Arguments.Token.OwnerCanDestroyIndividual);
285 case TokenProperties.CertifierCanDestroy: return Task.FromResult<object>(Arguments.Token.CertifierCanDestroy);
286 case TokenProperties.FriendlyName: return Task.FromResult<object>(Arguments.Token.FriendlyName);
287 case TokenProperties.Glyph: return Task.FromResult<object>(Arguments.Token.Glyph);
288 case TokenProperties.GlyphContentType: return Task.FromResult<object>(Arguments.Token.GlyphContentType);
289 case TokenProperties.GlyphWidth: return Task.FromResult<object>(Arguments.Token.GlyphWidth);
290 case TokenProperties.GlyphHeight: return Task.FromResult<object>(Arguments.Token.GlyphHeight);
291 case TokenProperties.Ordinal: return Task.FromResult<object>(Arguments.Token.Ordinal);
292 case TokenProperties.BatchSize: return Task.FromResult<object>(Arguments.Token.BatchSize);
293 default: return Task.FromResult<object>(null);
294 }
295 }
296 }
297}
Contains information required for evaluating script in a state-machine.
StateMachine Machine
Reference to state-machine definition.
override IStateMachineNode Create()
Creates a new node of the corresponding type.
override Task Parse(XmlElement Xml)
Parses the State-machine node.
override Task< object > Evaluate(EvaluationArguments Arguments)
Evaluates the value node.
Abstract base class for nodes with a value.
Definition: Value.cs:14
Abstract base class for State-Machine nodes containing a value.
Definition: ValueNode.cs:9
Class representing a state machine.
Definition: StateMachine.cs:43