aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Stubs/Stubs/Progress.cs
blob: 9ce96e633c7fa76cedd6a5c17a79755161037ca9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core;
using Tango.Logging;
using Tango.PMR;
using Tango.PMR.Stubs;
using Tango.Transport;

namespace Tango.Stubs.Stubs
{
    [Stub("Progress", "Check for multiple response request", StubDirection.ToMachine)]
    public class Progress : StubBase
    {
        public Progress(ITransporter transporter) : base(transporter)
        {
            Amount = 100;
            Delay = 4;
        }

        [ParameterItem(Minimum = null, Maximum = null, Default = 100.0)]
        public double Amount { get; set; }

        [ParameterItem(Minimum = null, Maximum = null, Default = 4.0)]
        public double Delay { get; set; }

        protected override Task<string> OnRun(Action<String> multiResponseCallback)
        {
            Transporter.SendContinuousRequest<ProgressRequest, ProgressResponse>(MessageFactory.CreateTangoMessage<ProgressRequest>(new ProgressRequest()
            {
                Amount = (int)Amount,
                Delay = (int)Delay,
            })).Subscribe((x) => 
            {
                multiResponseCallback(x.Message.Progress.ToString());
            }, (ex) => 
            {
                multiResponseCallback(ex.Message);
            }, () => 
            {
                multiResponseCallback("Completed!");
            });

            return Task.FromResult<String>("");
        }
    }
}