Monorepo/EDMI_ClientSuite/ClassInit.vb
2019-01-29 16:32:37 +01:00

82 lines
3.3 KiB
VB.net

Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Logging.LogConfig
Imports System.ServiceModel
Imports EDMI_ClientSuite.NetworkService_DDEDM
Public Class ClassInit
Private Const OPEN_TIMEOUT_SECONDS = 3
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 Enum ConnectionTestResult
Successful
NotFound
Unknown
End Enum
Private ReadOnly _Logger As Logger
Public Sub New()
_Logger = My.LogConfig.GetLogger()
End Sub
Public Function TestConnectionURLExists()
Return My.Settings.ICMServiceAddress <> String.Empty
End Function
Public Async Function TestConnectionAsync(EndpointURL As String) As Task(Of ConnectionTestResult)
Return Await Task.Factory.StartNew(Function()
Try
Dim oChannelFactory = GetChannelFactory(EndpointURL)
Dim oChannel = oChannelFactory.CreateChannel()
oChannel.OperationTimeout = New TimeSpan(0, 0, OPEN_TIMEOUT_SECONDS)
oChannel.Open()
oChannel.Close()
Return ConnectionTestResult.Successful
Catch ex As EndpointNotFoundException
Return ConnectionTestResult.NotFound
Catch ex As Exception
Return ConnectionTestResult.Unknown
End Try
End Function)
End Function
Public Function GetChannelFactory() As ChannelFactory(Of IEDMServiceChannel)
Return GetChannelFactory(My.Settings.ICMServiceAddress)
End Function
Public Function GetChannelFactory(EndpointURL As String) As ChannelFactory(Of IEDMServiceChannel)
Dim oBinding = GetBinding()
Dim oEndpoint = GetEndpoint(EndpointURL)
Dim oFactory As New ChannelFactory(Of IEDMServiceChannel)(oBinding, oEndpoint)
Return oFactory
End Function
Private Function GetEndpoint(EndpointURL As String) As EndpointAddress
Dim oEndpoint = New EndpointAddress(EndpointURL)
Return oEndpoint
End Function
Private Function GetBinding() As NetTcpBinding
Dim oBinding As New NetTcpBinding()
oBinding.Security.Mode = SecurityMode.Transport
oBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows
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_SECONDS)
Return oBinding
End Function
End Class