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 _Logger.Error(ex) Return ConnectionTestResult.NotFound Catch ex As Exception _Logger.Error(ex) 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