aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.PMR/Debugging/SetupDebugDisributorsResponse.cs
blob: 33b9484c31e9b67dfc2cf8e2a51abb68e8c549a2 (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: SetupDebugDisributorsResponse.proto
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Tango.PMR.Debugging {

  /// <summary>Holder for reflection information generated from SetupDebugDisributorsResponse.proto</summary>
  public static partial class SetupDebugDisributorsResponseReflection {

    #region Descriptor
    /// <summary>File descriptor for SetupDebugDisributorsResponse.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static SetupDebugDisributorsResponseReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiNTZXR1cERlYnVnRGlzcmlidXRvcnNSZXNwb25zZS5wcm90bxITVGFuZ28u",
            "UE1SLkRlYnVnZ2luZyIfCh1TZXR1cERlYnVnRGlzcmlidXRvcnNSZXNwb25z",
            "ZUIfCh1jb20udHdpbmUudGFuZ28ucG1yLmRlYnVnZ2luZ2IGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.Debugging.SetupDebugDisributorsResponse), global::Tango.PMR.Debugging.SetupDebugDisributorsResponse.Parser, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class SetupDebugDisributorsResponse : pb::IMessage<SetupDebugDisributorsResponse> {
    private static readonly pb::MessageParser<SetupDebugDisributorsResponse> _parser = new pb::MessageParser<SetupDebugDisributorsResponse>(() => new SetupDebugDisributorsResponse());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<SetupDebugDisributorsResponse> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Tango.PMR.Debugging.SetupDebugDisributorsResponseReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SetupDebugDisributorsResponse() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SetupDebugDisributorsResponse(SetupDebugDisributorsResponse other) : this() {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public SetupDebugDisributorsResponse Clone() {
      return new SetupDebugDisributorsResponse(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as SetupDebugDisributorsResponse);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(SetupDebugDisributorsResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(SetupDebugDisributorsResponse other) {
      if (other == null) {
        return;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
> _diagnosticsRequest; private bool _cancelJob; private List<int> _motorJoggingRequestCodes; private List<int> _motorHomingRequestCodes; private List<int> _dispenserJoggingRequestCodes; private List<int> _dispenserHomingRequestCodes; private double _graphAmplitude; private double _graphFrequency; private List<DigitalPin> _digitalOutputPinsStates; private List<DigitalPin> _digitalInputPinsStates; private List<ValueComponentState> _componentsStates; private List<ContinousResponseToken> _continousResponseTokens; public List<MachineEventState> EventsStates { get; set; } #region Constructors /// <summary> /// Initializes a new instance of the <see cref="MachineEmulator"/> class. /// </summary> public MachineEmulator() : base() { Init(); } /// <summary> /// Initializes a new instance of the <see cref="MachineEmulator"/> class. /// </summary> /// <param name="transporter">The transporter.</param> public MachineEmulator(ITransporter transporter) : base(transporter) { LogManager.Log("Machine emulator initialized using transporter " + transporter.ToString()); Init(); } #endregion #region Private Methods private ContinousResponseToken CreateCancelToken() { ContinousResponseToken t = new ContinousResponseToken(); _continousResponseTokens.Add(t); return t; } private void Init() { EventsStates = MachineEventState.GetAllEventsStates(); _continousResponseTokens = new List<ContinousResponseToken>(); _motorJoggingRequestCodes = new List<int>(); _motorHomingRequestCodes = new List<int>(); _dispenserJoggingRequestCodes = new List<int>(); _dispenserHomingRequestCodes = new List<int>(); _digitalOutputPinsStates = new List<DigitalPin>(); _componentsStates = new List<ValueComponentState>(); var adapter = ObservablesEntitiesAdapter.Instance; adapter.Initialize(); _digitalOutputPinsStates = adapter.TechIos.Where(x => x.Type == IOType.DigitalOutput.ToInt32()).Select(x => new DigitalPin() { Port = x.Port, }).ToList(); _digitalInputPinsStates = adapter.TechIos.Where(x => x.Type == IOType.DigitalInput.ToInt32()).Select(x => new DigitalPin() { Port = x.Port, }).ToList(); foreach (var item in adapter.TechControllers) { _componentsStates.Add(new ValueComponentState() { Component = (ValueComponent)item.Code, Value = item.Min }); } ResetGraphFactors(); } private void ResetGraphFactors() { _graphAmplitude = 75; _graphFrequency = 1; } #endregion #region Override Methods /// <summary> /// Called on new request message. /// </summary> /// <param name="sender">The sender.</param> /// <param name="container">The container.</param> protected override void OnTransporterRequestReceived(object sender, MessageContainer container) { switch (container.Type) { case MessageType.CalculateRequest: HandleCalculateRequest(MessageFactory.ParseTangoMessageFromContainer<CalculateRequest>(container)); break; case MessageType.ProgressRequest: HandleProgressRequest(MessageFactory.ParseTangoMessageFromContainer<ProgressRequest>(container)); break; case MessageType.PushDiagnosticsRequest: HandlePushDiagnosticsRequest(MessageFactory.ParseTangoMessageFromContainer<PushDiagnosticsRequest>(container)); break; case MessageType.JobRequest: HandleJobRequest(MessageFactory.ParseTangoMessageFromContainer<JobRequest>(container)); break; case MessageType.AbortJobRequest: HandleAbortJobRequest(MessageFactory.ParseTangoMessageFromContainer<AbortJobRequest>(container)); break; case MessageType.MotorJoggingRequest: HandleMotorJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<MotorJoggingRequest>(container)); break; case MessageType.MotorAbortJoggingRequest: HandleAbortMotorJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<MotorAbortJoggingRequest>(container)); break; case MessageType.MotorHomingRequest: HandleMotorHomingRequest(MessageFactory.ParseTangoMessageFromContainer<MotorHomingRequest>(container)); break; case MessageType.MotorAbortHomingRequest: HandleAbortMotorHomingRequest(MessageFactory.ParseTangoMessageFromContainer<MotorAbortHomingRequest>(container)); break; case MessageType.DispenserJoggingRequest: HandleDispenserJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<DispenserJoggingRequest>(container)); break; case MessageType.DispenserAbortJoggingRequest: HandleAbortDispenserJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<DispenserAbortJoggingRequest>(container)); break; case MessageType.DispenserHomingRequest: HandleDispenserHomingRequest(MessageFactory.ParseTangoMessageFromContainer<DispenserHomingRequest>(container)); break; case MessageType.DispenserAbortHomingRequest: HandleAbortDispenserHomingRequest(MessageFactory.ParseTangoMessageFromContainer<DispenserAbortHomingRequest>(container)); break; case MessageType.SetDigitalOutRequest: HandleSetDigitalOutRequest(MessageFactory.ParseTangoMessageFromContainer<SetDigitalOutRequest>(container)); break; case MessageType.ThreadJoggingRequest: HandleThreadJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<ThreadJoggingRequest>(container)); break; case MessageType.ThreadAbortJoggingRequest: HandleThreadAbortJoggingRequest(MessageFactory.ParseTangoMessageFromContainer<ThreadAbortJoggingRequest>(container)); break; case MessageType.DebugLogRequest: HandleDebugLogRequest(MessageFactory.ParseTangoMessageFromContainer<DebugLogRequest>(container)); break; case MessageType.UploadProcessParametersRequest: HandleUploadProcessParametersRequest(MessageFactory.ParseTangoMessageFromContainer<UploadProcessParametersRequest>(container)); break; case MessageType.SetComponentValueRequest: HandleSetComponentValueRequest(MessageFactory.ParseTangoMessageFromContainer<SetComponentValueRequest>(container)); break; case MessageType.ResolveEventRequest: HandleResolveEventRequest(MessageFactory.ParseTangoMessageFromContainer<ResolveEventRequest>(container)); break; case MessageType.DisconnectRequest: HandleDisconnectRequest(MessageFactory.ParseTangoMessageFromContainer<DisconnectRequest>(container)); break; case MessageType.ConnectRequest: HandleConnectRequest(MessageFactory.ParseTangoMessageFromContainer<ConnectRequest>(container)); break; } } #endregion #region Request Handlers private void HandleCalculateRequest(TangoMessage<CalculateRequest> request) { LogManager.Log("Calculate request received " + Environment.NewLine + request.Message.ToJsonString()); Task.Factory.StartNew(() => { var response = MessageFactory.CreateTangoMessage<CalculateResponse>(request.Container.Token); response.Message.Sum = request.Message.A + request.Message.B; Transporter.SendResponse(response); }); } private void HandleProgressRequest(TangoMessage<ProgressRequest> request) { Task.Factory.StartNew(() => { for (int i = 0; i < request.Message.Amount; i++) { Thread.Sleep(request.Message.Delay * 10); var res = MessageFactory.CreateTangoMessage<ProgressResponse>(request.Container.Token); res.Message.Progress = i; if (i == request.Message.Amount - 1) res.Container.Completed = true; Transporter.SendResponse(res); } }); } private void HandlePushDiagnosticsRequest(TangoMessage<PushDiagnosticsRequest> request) { LogManager.Log("Push diagnostics request received " + Environment.NewLine + request.Message.ToJsonString()); _diagnosticsRequest = request.Message; int value = 0; Random rnd = new Random(); var cancelToken = CreateCancelToken(); Task.Factory.StartNew(() => { while (Transporter.State == TransportComponentState.Connected && !cancelToken.Canceled) { PushDiagnosticsResponse res = new PushDiagnosticsResponse(); DiagnosticsMonitors monitors = new DiagnosticsMonitors(); res.Monitors = monitors; for (int i = 0; i < 10; i++) { value++; monitors.Dancer1Angle.Add((int)(150 + _graphAmplitude * Math.Sin(2 * 3.14 * ((int)_graphFrequency) * value))); } monitors.Dancer2Angle.Add(Cursor.Position.Y); monitors.Dancer3Angle.Add(Cursor.Position.Y); var dispenserFrequencies = new RepeatedField<DoubleArray>(); double cPosition = Cursor.Position.Y; for (int i = 0; i < 8; i++) { DoubleArray singleDispenser = new DoubleArray(); for (int j = 0; j < 10; j++) { singleDispenser.Data.Add(cPosition + (i * 50)); } dispenserFrequencies.Add(singleDispenser); } monitors.DispensersMotorsFrequency.AddRange(dispenserFrequencies); monitors.Dispenser1MotorFrequency.AddRange(dispenserFrequencies[0].Data); monitors.Dispenser2MotorFrequency.AddRange(dispenserFrequencies[1].Data); monitors.Dispenser3MotorFrequency.AddRange(dispenserFrequencies[2].Data); monitors.Dispenser4MotorFrequency.AddRange(dispenserFrequencies[3].Data); monitors.Dispenser5MotorFrequency.AddRange(dispenserFrequencies[4].Data); monitors.Dispenser6MotorFrequency.AddRange(dispenserFrequencies[5].Data); monitors.Dispenser7MotorFrequency.AddRange(dispenserFrequencies[6].Data); monitors.Dispenser8MotorFrequency.AddRange(dispenserFrequencies[7].Data); res.DigitalPins.AddRange(_digitalOutputPinsStates.Concat(_digitalInputPinsStates)); res.ComponentsStates.AddRange(_componentsStates); res.Events.AddRange(EventsStates.Where(x => x.IsActive).Select(x => new Event() { Type = x.EventType, Message = "Generated by Tango Embedded Emulator" })); res.Version = "1.0.0.0"; res.VersionBuildDate = DateTime.Now.ToString(); res.VersionName = "Embedded Emulator"; Transporter.SendResponse<PushDiagnosticsResponse>(res, request.Container.Token); Thread.Sleep(10); } }); } private void HandleDebugLogRequest(TangoMessage<DebugLogRequest> request) { LogManager.Log("Debug log request received " + Environment.NewLine + request.Message.ToJsonString()); int counter = 1; var cancelToken = CreateCancelToken(); Task.Factory.StartNew(() => { while (Transporter.State == TransportComponentState.Connected && !cancelToken.Canceled) { DebugLogResponse res = new DebugLogResponse(); res.FileName = "C:\\demoFile.c"; res.LineNumber = 100; res.Filter = 1; res.Message = "This is a false message " + counter++; res.Category = DebugLogCategory.Info; Transporter.SendResponse<DebugLogResponse>(res, request.Container.Token); Thread.Sleep(10); } }); } private void HandleJobRequest(TangoMessage<JobRequest> request) { JobTicket job = request.Message.JobTicket; LogManager.Log("Job request received: " + Environment.NewLine + job.ToJsonString()); double progress = 0; _cancelJob = false; Task.Factory.StartNew(() => { while (progress < job.Length && !_cancelJob) { Transporter.SendResponse<JobResponse>(new JobResponse() { Status = new JobStatus() { Progress = progress } }, request.Container.Token); progress += 0.03; Thread.Sleep(30); } Transporter.SendResponse<JobResponse>(new JobResponse() { Status = new JobStatus() { Progress = job.Length, } }, request.Container.Token, !_cancelJob); }); } private void HandleAbortJobRequest(TangoMessage<AbortJobRequest> request) { LogManager.Log("Abort job request received."); _cancelJob = true; Transporter.SendResponse<AbortJobResponse>(new AbortJobResponse(), request.Container.Token); } private void HandleMotorJoggingRequest(TangoMessage<MotorJoggingRequest> request) { var jogRequest = request.Message; _motorJoggingRequestCodes.Add(jogRequest.Code); LogManager.Log("Motor jogging request received: " + Environment.NewLine + jogRequest.ToJsonString()); Task.Factory.StartNew(() => { while (_motorJoggingRequestCodes.Contains(jogRequest.Code)) { if (jogRequest.Direction == MotorDirection.Forward) { _graphFrequency = 10; } else { _graphFrequency = 18; } Thread.Sleep(30); } ResetGraphFactors(); }); Transporter.SendResponse<MotorJoggingResponse>(new MotorJoggingResponse(), request.Container.Token); } private void HandleAbortMotorJoggingRequest(TangoMessage<MotorAbortJoggingRequest> request) { LogManager.Log("Abort motor jogging request received: " + Environment.NewLine + request.Message.ToJsonString()); _motorJoggingRequestCodes.RemoveAll(x => x == request.Message.Code); ResetGraphFactors(); Transporter.SendResponse<MotorAbortJoggingResponse>(new MotorAbortJoggingResponse(), request.Container.Token); } private void HandleMotorHomingRequest(TangoMessage<MotorHomingRequest> request) { var homeRequest = request.Message; LogManager.Log("Motor homing request received: " + Environment.NewLine + homeRequest.ToJsonString()); _motorHomingRequestCodes.Add(homeRequest.Code); Task.Factory.StartNew(() => { _graphFrequency = 10; var inputPin = _digitalInputPinsStates.FirstOrDefault(); for (int i = 0; i < 100; i++) { if (inputPin != null) { inputPin.Value = !inputPin.Value; } Transporter.SendResponse<MotorHomingResponse>(new MotorHomingResponse() { MaxProgress = 100, Progress = i }, request.Container.Token); if (!_motorHomingRequestCodes.Contains(homeRequest.Code)) { ResetGraphFactors(); return; } Thread.Sleep(30); } Transporter.SendResponse<MotorHomingResponse>(new MotorHomingResponse() { MaxProgress = 100, Progress = 100 }, request.Container.Token, true); _motorHomingRequestCodes.Remove(homeRequest.Code); ResetGraphFactors(); }); } private void HandleAbortMotorHomingRequest(TangoMessage<MotorAbortHomingRequest> request) { LogManager.Log("Abort motor homing request received: " + Environment.NewLine + request.Message.ToJsonString()); _motorHomingRequestCodes.RemoveAll(x => x == request.Message.Code); ResetGraphFactors(); Transporter.SendResponse<MotorAbortHomingResponse>(new MotorAbortHomingResponse(), request.Container.Token); } private void HandleDispenserJoggingRequest(TangoMessage<DispenserJoggingRequest> request) { var jogRequest = request.Message; _dispenserJoggingRequestCodes.Add(jogRequest.Code); LogManager.Log("Dispenser jogging request received: " + Environment.NewLine + jogRequest.ToJsonString()); Task.Factory.StartNew(() => { while (_dispenserJoggingRequestCodes.Contains(jogRequest.Code)) { if (jogRequest.Direction == MotorDirection.Forward) { _graphFrequency = 10; } else { _graphFrequency = 18; } Thread.Sleep(30); } ResetGraphFactors(); }); Transporter.SendResponse<DispenserJoggingResponse>(new DispenserJoggingResponse(), request.Container.Token); } private void HandleAbortDispenserJoggingRequest(TangoMessage<DispenserAbortJoggingRequest> request) { LogManager.Log("Abort dispenser jogging request received: " + Environment.NewLine + request.Message.ToJsonString()); _dispenserJoggingRequestCodes.RemoveAll(x => x == request.Message.Code); ResetGraphFactors(); Transporter.SendResponse<DispenserAbortJoggingResponse>(new DispenserAbortJoggingResponse(), request.Container.Token); } private void HandleDispenserHomingRequest(TangoMessage<DispenserHomingRequest> request) { var homeRequest = request.Message; LogManager.Log("Dispenser homing request received: " + Environment.NewLine + homeRequest.ToJsonString()); _dispenserHomingRequestCodes.Add(homeRequest.Code); Task.Factory.StartNew(() => { _graphFrequency = 10; for (int i = 0; i < 100; i++) { Transporter.SendResponse<DispenserHomingResponse>(new DispenserHomingResponse() { MaxProgress = 100, Progress = i }, request.Container.Token); if (!_dispenserHomingRequestCodes.Contains(homeRequest.Code)) { ResetGraphFactors(); return; } Thread.Sleep(30); } Transporter.SendResponse<DispenserHomingResponse>(new DispenserHomingResponse() { MaxProgress = 100, Progress = 100 }, request.Container.Token, true); _dispenserHomingRequestCodes.Remove(homeRequest.Code); ResetGraphFactors(); }); } private void HandleAbortDispenserHomingRequest(TangoMessage<DispenserAbortHomingRequest> request) { LogManager.Log("Abort dispenser homing request received: " + Environment.NewLine + request.Message.ToJsonString()); _dispenserHomingRequestCodes.RemoveAll(x => x == request.Message.Code); ResetGraphFactors(); Transporter.SendResponse<DispenserAbortHomingResponse>(new DispenserAbortHomingResponse(), request.Container.Token); } private void HandleSetDigitalOutRequest(TangoMessage<SetDigitalOutRequest> request) { LogManager.Log("Set digital output pin request received: " + Environment.NewLine + request.Message.ToJsonString()); var pinState = _digitalOutputPinsStates.SingleOrDefault(x => x.Port == request.Message.Port); if (pinState != null) { pinState.Value = request.Message.Value; Transporter.SendResponse<SetDigitalOutResponse>(new SetDigitalOutResponse(), request.Container.Token); } else { Transporter.SendResponse<SetDigitalOutResponse>(new SetDigitalOutResponse(), request.Container.Token, null, ErrorCode.InvalidDigitalPinNumber); } } private void HandleThreadJoggingRequest(TangoMessage<ThreadJoggingRequest> request) { LogManager.Log("Thread motion request received: " + Environment.NewLine + request.Message.ToJsonString()); Transporter.SendResponse<ThreadJoggingResponse>(new ThreadJoggingResponse(), request.Container.Token); } private void HandleThreadAbortJoggingRequest(TangoMessage<ThreadAbortJoggingRequest> request) { LogManager.Log("Abort thread motion request received: " + Environment.NewLine + request.Message.ToJsonString()); Transporter.SendResponse<ThreadAbortJoggingResponse>(new ThreadAbortJoggingResponse(), request.Container.Token); } private void HandleUploadProcessParametersRequest(TangoMessage<UploadProcessParametersRequest> request) { LogManager.Log("Upload process parameters request received: " + Environment.NewLine + request.Message.ToJsonString()); Task.Factory.StartNew(() => { Thread.Sleep(1000); Transporter.SendResponse<UploadProcessParametersResponse>(new UploadProcessParametersResponse(), request.Container.Token); }); } private void HandleSetComponentValueRequest(TangoMessage<SetComponentValueRequest> request) { LogManager.Log("Set component value request received: " + Environment.NewLine + request.Message.ToJsonString()); var componentState = _componentsStates.SingleOrDefault(x => x.Component == request.Message.Component); double startValue = componentState.Value; double targetValue = request.Message.Value; Transporter.SendResponse<SetComponentValueResponse>(new SetComponentValueResponse(), request.Container.Token); Task.Factory.StartNew(() => { if (targetValue > startValue) { while (componentState.Value < targetValue) { componentState.Value++; Thread.Sleep(30); } } else { while (componentState.Value > targetValue) { componentState.Value--; Thread.Sleep(30); } } }); } private void HandleResolveEventRequest(TangoMessage<ResolveEventRequest> request) { LogManager.Log("Resolve event request received: " + Environment.NewLine + request.Message.ToJsonString()); EventsStates.Where(x => x.EventType == request.Message.Type).ToList().ForEach(x => x.IsActive = false); Transporter.SendResponse<ResolveEventResponse>(new ResolveEventResponse(), request.Container.Token); } private void HandleDisconnectRequest(TangoMessage<DisconnectRequest> request) { LogManager.Log("Disconnect request received: " + Environment.NewLine + request.Message.ToJsonString()); foreach (var cancelToken in _continousResponseTokens) { cancelToken.Canceled = true; } _continousResponseTokens.Clear(); Transporter.SendResponse<DisconnectResponse>(new DisconnectResponse(), request.Container.Token); } private void HandleConnectRequest(TangoMessage<ConnectRequest> request) { LogManager.Log("Connect request received: " + Environment.NewLine + request.Message.ToJsonString()); foreach (var cancelToken in _continousResponseTokens) { cancelToken.Canceled = true; } _continousResponseTokens.Clear(); Transporter.SendResponse<ConnectResponse>(new ConnectResponse(), request.Container.Token, null, request.Message.Password == "1234" ? ErrorCode.None : ErrorCode.UnauthorizedConnection); } #endregion #region Public Methods #endregion } }