Jonathan Jenne 7e7eee7299 23-12-2022
2022-12-23 13:27:30 +01:00

78 lines
3.2 KiB
VB.net

Imports System.ServiceModel
Imports System.ServiceModel.Description
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Messaging.WCF
Imports ECM.JobRunner.Windows.Scheduler
Imports FxResources.System
Namespace WCF
Public Class JobRunner
Implements IJobRunner
Public Shared State As State
Public Shared LogConfig As LogConfig
Public Shared Database As MSSQLServer
Public Shared Scheduler As JobScheduler
Private ReadOnly Logger As Logger
''' <summary>
''' See: https://stackoverflow.com/questions/42327988/addserviceendpoint-throws-key-is-null
''' </summary>
''' <param name="Config"></param>
Public Shared Sub Configure(Config As ServiceConfiguration)
Dim oBaseAddress = Config.BaseAddresses.Item(0)
Dim oBinding = Binding.GetBinding()
Dim oAddress = New EndpointAddress(oBaseAddress)
Dim oDescription = ContractDescription.GetContract(GetType(IJobRunner), GetType(JobRunner))
Dim oEndpoint As New ServiceEndpoint(oDescription, oBinding, oAddress)
Config.AddServiceEndpoint(oEndpoint)
Config.Description.Behaviors.Add(New ServiceDebugBehavior With {
.IncludeExceptionDetailInFaults = True
})
End Sub
Public Sub New()
Logger = LogConfig.GetLogger()
End Sub
Public Function GetHeartbeat() As Date Implements IJobRunner.GetHeartbeat
Return Now
End Function
Public Function GetJobHistory() As GetJobStatus.GetJobStatusResponse Implements IJobRunner.GetJobStatus
' No, we will not log this call because it will be called *A LOT*.
' Nobody needs to see this in a log.
Dim oMethod As New GetJobStatus.GetJobStatusMethod(LogConfig, Database, State, Scheduler)
Return oMethod.Run()
End Function
Public Function GetJobConfig() As GetJobConfig.GetJobConfigResponse Implements IJobRunner.GetJobConfig
Logger.Info("Calling Method [GetJobConfig]")
Dim oMethod As New GetJobConfig.GetJobConfigMethod(LogConfig, Database, State)
Return oMethod.Run()
End Function
Public Function UpdateJob(pData As UpdateJob.UpdateJobRequest) As UpdateJob.UpdateJobResponse Implements IJobRunner.UpdateJob
Logger.Info("Calling Method [UpdateJob]")
Dim oMethod As New UpdateJob.UpdateJobMethod(LogConfig, Database, State, Scheduler)
Return oMethod.Run(pData)
End Function
Public Function UpdateProfile(pData As UpdateProfile.UpdateProfileRequest) As UpdateProfile.UpdateProfileResponse Implements IJobRunner.UpdateProfile
Logger.Info("Calling Method [UpdateProfile]")
Dim oMethod As New UpdateProfile.UpdateProfileMethod(LogConfig, Database, State, Scheduler)
Return oMethod.Run(pData)
End Function
Public Function RunJob(pData As RunJob.RunJobRequest) As RunJob.RunJobResponse Implements IJobRunner.RunJob
Dim oMethod As New RunJob.RunJobMethod(LogConfig, Database, State, Scheduler)
Return oMethod.Run(pData)
End Function
End Class
End Namespace