ClientSuite: Improve WorkerManager

This commit is contained in:
Jonathan Jenne
2019-06-14 14:18:14 +02:00
parent f1c0a1efd6
commit d3b5955b45
5 changed files with 71 additions and 43 deletions

View File

@@ -1,47 +1,44 @@
Imports System.Timers
Imports DigitalData.GUIs.ClientSuite
Imports DigitalData.GUIs.ClientSuite.Base
Imports DigitalData.Modules.EDMIAPI.IDBServiceReference
Imports DigitalData.Modules.Logging
Namespace Workers
Public Class HeartbeatWorker
Inherits BaseClass
Implements IWorker
Private _Channel As IIDBServiceChannel
Public Event OnlineChanged As OnlineChangedEventHandler
Public Delegate Sub OnlineChangedEventHandler(sender As Object, Online As Boolean)
Public ReadOnly Property Interval As Integer = 4000 Implements IWorker.Interval
Public ReadOnly Property Name As String = "Heartbeat Worker" Implements IWorker.Name
Public Sub New(LogConfig As LogConfig)
MyBase.New(LogConfig)
End Sub
Public Sub Setup() Implements IWorker.Setup
_Channel = My.ChannelFactory.CreateChannel()
_Channel.Open()
Logger.Debug("Starting {0}", "HeartbeatWorker")
End Sub
Public Async Sub Callback(manager As WorkerManager, e As ElapsedEventArgs) Implements IWorker.Callback
Public Async Sub Callback(Manager As WorkerManager, e As ElapsedEventArgs) Implements IWorker.Callback
Try
Logger.Debug("Checking if Service is up...")
If _Channel.State = ServiceModel.CommunicationState.Faulted Then
_Channel = My.ChannelFactory.CreateChannel()
If My.Channel.State = ServiceModel.CommunicationState.Faulted Then
My.Channel = My.ChannelFactory.CreateChannel()
End If
' Connect to service and send hearbeat request
Dim oResult = Await _Channel.HeartbeatAsync()
Dim oResult = Await My.Channel.HeartbeatAsync()
Logger.Debug("Service is online")
SetOnlineState(True)
Catch ex As Exception
Logger.Debug("Service is offline!")
Logger.Error(ex)
Manager.StopWorkers()
SetOnlineState(False)
Finally
My.Application.Service.LastChecked = DateTime.Now
@@ -49,7 +46,7 @@ Namespace Workers
End Sub
Public Sub Teardown() Implements IWorker.Teardown
' TODO: Close channel gracefully
Logger.Debug("Stopping {0}", Name)
End Sub
Private Sub SetOnlineState(NewState As Boolean)