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