This commit is contained in:
Jonathan Jenne
2019-01-23 17:22:13 +01:00
parent 1ed569f7b0
commit 94376068d6
10 changed files with 149 additions and 93 deletions

View File

@@ -2,67 +2,39 @@
Imports DigitalData.Modules.Logging.LogConfig
Imports System.ServiceModel
Imports EDMI_ClientSuite.NetworkService_DDEDM
Imports System.IO
Public Class ClassInit
Private _ChannelFactory As ChannelFactory(Of IEDMServiceChannel)
Private _Channel As IEDMServiceChannel
Private _Logger As Logger
Private _LogConfig As LogConfig
Private CurrentRetry As Integer = 0
Private Const MAX_RETRIES = 10
Private Const OPEN_TIMEOUT = 10
Private Const MAX_MESSAGE_SIZE = 2147483647
Private Const MAX_BUFFER_SIZE = 2147483647
Private Const MAX_ARRAY_LENGTH = 2147483647
Private Const MAX_STRING_LENGTH = 2147483647
Private Const MAX_CONNECTIONS = 10000
Public Property _LogConfig As LogConfig
Public Sub New()
_LogConfig = New LogConfig(PathType.AppData)
_Logger = _LogConfig.GetLogger()
MyLogger = _Logger
MyLogConfig = _LogConfig
_ChannelFactory = ConfigureChannelFactory()
_Logger.Debug("Service channelfactory created")
Connect()
End Sub
Public Function ConfigureChannelFactory()
Public Function CreateService() As ChannelFactory(Of IEDMServiceChannel)
Return CreateChannelFactory()
End Function
Private Function CreateChannelFactory() As ChannelFactory(Of IEDMServiceChannel)
Dim oBinding As New NetTcpBinding()
oBinding.Security.Mode = SecurityMode.Transport
oBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows
oBinding.MaxReceivedMessageSize = 2147483647
oBinding.MaxBufferSize = 2147483647
oBinding.MaxBufferPoolSize = 2147483647
oBinding.MaxConnections = 10000
oBinding.ReaderQuotas.MaxArrayLength = 2147483647
oBinding.ReaderQuotas.MaxStringContentLength = 2147483647
'oBinding.OpenTimeout = New TimeSpan(0, 0, OPEN_TIMEOUT)
oBinding.MaxReceivedMessageSize = MAX_MESSAGE_SIZE
oBinding.MaxBufferSize = MAX_BUFFER_SIZE
oBinding.MaxBufferPoolSize = MAX_BUFFER_SIZE
oBinding.MaxConnections = MAX_CONNECTIONS
oBinding.ReaderQuotas.MaxArrayLength = MAX_ARRAY_LENGTH
oBinding.ReaderQuotas.MaxStringContentLength = MAX_STRING_LENGTH
oBinding.OpenTimeout = New TimeSpan(0, 0, OPEN_TIMEOUT)
Dim oEndpointAddress = New EndpointAddress(My.Settings.EDM_NetworkService_Adress)
Return New ChannelFactory(Of IEDMServiceChannel)(oBinding, oEndpointAddress)
End Function
Private Sub Connect()
Try
_Channel = _ChannelFactory.CreateChannel()
_Logger.Debug("Service channel created")
_Logger.Debug("Opening service channel")
AddHandler _Channel.Faulted, AddressOf Reconnect
_Channel.Open()
_Logger.Debug("Service channel opened")
_Logger.Info("Connection to service established!")
Catch ex As Exception
_Logger.Error(ex)
Throw ex
End Try
End Sub
Private Sub Reconnect(sender As Object, e As EventArgs)
_Logger.Warn("Could not connect to service. Retrying.")
_Channel.Abort()
Connect()
End Sub
End Class