ClientSuite: Improve WorkerManager
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user