public WebSocketRelayedConnectionListener(TokenProvider tokenProvider, SocketSecurityRole socketSecurityMode, NameSettings nameSettings, BindingContext context) { this.tokenProvider = tokenProvider; this.nameSettings = nameSettings; this.serviceHost = new ConfigurationlessServiceHost(this, new Uri[0]); this.innerConnectionStatus = new ConnectionStatusBehavior(); this.connectivitySettings = context.BindingParameters.Find <ConnectivitySettings>(); this.httpConnectivitySettings = context.BindingParameters.Find <HttpConnectivitySettings>(); }
public RelayedOnewayAmqpListenerClient(BindingContext context, RelayedOnewayTransportBindingElement transportBindingElement, System.Uri uri, RelayedOnewayListener listener, EventTraceActivity activity) : base(context, transportBindingElement, uri, true, activity) { this.listener = listener; BinaryMessageEncodingBindingElement binaryMessageEncodingBindingElement = ClientMessageUtility.CreateInnerEncodingBindingElement(context); this.encoder = binaryMessageEncodingBindingElement.CreateMessageEncoderFactory().Encoder; this.messageWrapper = new MessageWrapper(this.encoder); this.bufferManager = BufferManager.CreateBufferManager(transportBindingElement.MaxBufferPoolSize, transportBindingElement.MaxBufferSize); base.IsListener = true; this.connectivitySettings = context.BindingParameters.Find <ConnectivitySettings>(); this.httpConnectivitySettings = context.BindingParameters.Find <HttpConnectivitySettings>(); }
public RelayedSocketElement(BindingContext context, NameSettings nameSettings, TokenProvider tokenProvider, SocketSecurityRole socketSecurityMode) { this.context = context; this.nameSettings = nameSettings; this.tokenProvider = tokenProvider; this.socketSecurityMode = socketSecurityMode; ConnectivitySettingsEndpointBehavior connectivitySettingsEndpointBehavior = null; ConnectivitySettings connectivitySetting = this.context.BindingParameters.Find <ConnectivitySettings>(); HttpConnectivitySettings httpConnectivitySetting = this.context.BindingParameters.Find <HttpConnectivitySettings>(); if (connectivitySetting != null || httpConnectivitySetting != null) { connectivitySettingsEndpointBehavior = new ConnectivitySettingsEndpointBehavior(connectivitySetting, httpConnectivitySetting); } this.connectionListener = new RelayedSocketListener(this.tokenProvider, this.nameSettings, this.socketSecurityMode, connectivitySettingsEndpointBehavior); }
public AmqpRelay(Uri serviceBusUri, TokenProvider tokenProvider, ConnectivitySettings connectivitySettings = null, HttpConnectivitySettings httpConnectivitySettings = null) { this.serviceBusUri = serviceBusUri; if (tokenProvider != null) { this.tokenRenewer = new AmqpRelay.TokenRenewer(tokenProvider, this.serviceBusUri.AbsoluteUri, "Listen"); } this.RelayClientAuthorizationRequired = true; this.IsDynamic = true; this.State = AmqpObjectState.Start; this.ListenerType = Microsoft.ServiceBus.ListenerType.RoutedHttp; this.onAmqpObjectClosed = new EventHandler(this.OnAmqpObjectClosed); this.ThisLock = new object(); this.connectivitySettings = connectivitySettings; this.httpConnectivitySettings = httpConnectivitySettings; this.activity = new EventTraceActivity(); }
public ConnectivitySettingsEndpointBehavior(ConnectivitySettings connectivitySettings, HttpConnectivitySettings httpConnectivitySettings) { this.connectivitySettings = connectivitySettings; this.httpConnectivitySettings = httpConnectivitySettings; }
private BindingElement BuildInnerBindingElement(BindingContext context) { SocketConnectionBindingElement socketConnectionBindingElement = null; NameSettings nameSetting = context.BindingParameters.Find <NameSettings>(); NameSettings relayClientAuthenticationType = nameSetting; if (nameSetting == null) { relayClientAuthenticationType = new NameSettings(); context.BindingParameters.Add(relayClientAuthenticationType); } relayClientAuthenticationType.ServiceSettings.TransportProtection = (this.transportProtectionEnabled ? RelayTransportProtectionMode.EndToEnd : RelayTransportProtectionMode.None); relayClientAuthenticationType.ServiceSettings.RelayClientAuthenticationType = this.RelayClientAuthenticationType; relayClientAuthenticationType.ServiceSettings.IsDynamic = this.IsDynamic; TokenProvider tokenProvider = TokenProviderUtility.CreateTokenProvider(context); switch (this.relayedConnectionMode) { case TcpRelayConnectionMode.Relayed: { if (relayClientAuthenticationType.ServiceSettings.ListenerType != ListenerType.RelayedHttp) { relayClientAuthenticationType.ServiceSettings.ListenerType = ListenerType.RelayedConnection; } ConnectivitySettings connectivitySetting = context.BindingParameters.Find <ConnectivitySettings>(); HttpConnectivitySettings httpConnectivitySetting = context.BindingParameters.Find <HttpConnectivitySettings>(); socketConnectionBindingElement = new SocketConnectionBindingElement(new ConnectivityModeConnectionElement(tokenProvider, (this.transportProtectionEnabled ? SocketSecurityRole.SslClient : SocketSecurityRole.None), context, relayClientAuthenticationType, connectivitySetting, httpConnectivitySetting)); break; } case TcpRelayConnectionMode.Hybrid: { if (base.ChannelInitializationTimeout < TimeSpan.FromSeconds(60)) { base.ChannelInitializationTimeout = TimeSpan.FromSeconds(60); } relayClientAuthenticationType.ServiceSettings.ListenerType = ListenerType.DirectConnection; socketConnectionBindingElement = new SocketConnectionBindingElement(new HybridConnectionElement(context, this, relayClientAuthenticationType, tokenProvider)); break; } default: { goto case TcpRelayConnectionMode.Relayed; } } socketConnectionBindingElement.ChannelInitializationTimeout = base.ChannelInitializationTimeout; socketConnectionBindingElement.ConnectionBufferSize = base.ConnectionBufferSize; socketConnectionBindingElement.ConnectionPoolSettings.GroupName = this.ConnectionPoolSettings.GroupName; socketConnectionBindingElement.ConnectionPoolSettings.IdleTimeout = this.ConnectionPoolSettings.IdleTimeout; socketConnectionBindingElement.ConnectionPoolSettings.LeaseTimeout = this.ConnectionPoolSettings.LeaseTimeout; socketConnectionBindingElement.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint = this.ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint; socketConnectionBindingElement.ExposeConnectionProperty = base.ExposeConnectionProperty; socketConnectionBindingElement.HostNameComparisonMode = base.HostNameComparisonMode; socketConnectionBindingElement.InheritBaseAddressSettings = base.InheritBaseAddressSettings; socketConnectionBindingElement.ListenBacklog = this.ListenBacklog; socketConnectionBindingElement.ManualAddressing = base.ManualAddressing; socketConnectionBindingElement.MaxBufferPoolSize = this.MaxBufferPoolSize; socketConnectionBindingElement.MaxBufferSize = base.MaxBufferSize; socketConnectionBindingElement.MaxOutputDelay = base.MaxOutputDelay; socketConnectionBindingElement.MaxPendingAccepts = base.MaxPendingAccepts; socketConnectionBindingElement.MaxPendingConnections = base.MaxPendingConnections; socketConnectionBindingElement.MaxReceivedMessageSize = this.MaxReceivedMessageSize; socketConnectionBindingElement.TransferMode = base.TransferMode; socketConnectionBindingElement.TeredoEnabled = false; return(socketConnectionBindingElement); }
public ConnectivityModeConnectionElement(TokenProvider tokenProvider, SocketSecurityRole socketSecurityMode, BindingContext context, NameSettings nameSettings, ConnectivitySettings connectivitySettings, HttpConnectivitySettings httpConnectivitySettings) { this.tokenProvider = tokenProvider; this.SecurityMode = socketSecurityMode; this.cache = new ConnectivityModeCache(connectivitySettings, httpConnectivitySettings); if (context == null || !(context.ListenUriBaseAddress != null)) { return; } InternalConnectivityMode internalConnectivityMode = this.cache.GetInternalConnectivityMode(context.ListenUriBaseAddress); switch (internalConnectivityMode) { case InternalConnectivityMode.Tcp: { this.connectionElement = new RelayedSocketElement(context, nameSettings, this.tokenProvider, this.SecurityMode); return; } case InternalConnectivityMode.Http: { this.connectionElement = new WebStreamRelayedConnectionElement(this.tokenProvider, this.SecurityMode, context, nameSettings, false); return; } case InternalConnectivityMode.Https: { this.connectionElement = new WebStreamRelayedConnectionElement(this.tokenProvider, this.SecurityMode, context, nameSettings, true); return; } case InternalConnectivityMode.HttpsWebSocket: { this.connectionElement = new WebSocketRelayedConnectionElement(this.tokenProvider, this.SecurityMode, context, nameSettings); return; } } throw new InvalidOperationException(SRClient.UnsupportedConnectivityMode(internalConnectivityMode)); }
public AmqpRelayedConnection(RelayedOnewayListener.RelayedOnewayAmqpListenerClient client, System.Uri via, ConnectivitySettings connectivitySettings, HttpConnectivitySettings httpConnectivitySettings) : base(via) { this.communicationState = CommunicationState.Created; this.client = client; this.receivedMessages = new InputQueue <Message>(); this.amqpRelay = new AmqpRelay(client.Uri, client.TokenProvider, connectivitySettings, httpConnectivitySettings); this.amqpRelay.Connecting += new EventHandler((object s, EventArgs e) => base.RaiseClosed(this, e)); this.amqpRelay.Offline += new EventHandler((object s, EventArgs e) => base.RaiseFaulted(this, e)); ServiceSettings serviceSettings = client.listener.nameSettings.ServiceSettings; if (serviceSettings.RelayClientAuthenticationType == RelayClientAuthenticationType.None) { this.amqpRelay.RelayClientAuthorizationRequired = false; } this.amqpRelay.DisplayName = client.listener.nameSettings.DisplayName; this.amqpRelay.ListenerType = serviceSettings.ListenerType; this.amqpRelay.IsDynamic = serviceSettings.IsDynamic; this.amqpRelay.ClientAgent = serviceSettings.ClientAgent; this.amqpRelay.PublishToRegistry = serviceSettings.IsDiscoverable; this.amqpRelay.TransportSecurityRequired = serviceSettings.TransportProtection == RelayTransportProtectionMode.EndToEnd; }
public ConnectivityModeCache(ConnectivitySettings connectivitySettings, HttpConnectivitySettings httpConnectivitySettings) { this.connectivitySettings = connectivitySettings; this.httpConnectivitySettings = httpConnectivitySettings; }
internal static InternalConnectivityMode GetInternalConnectivityMode(ConnectivitySettings connectivitySettings, HttpConnectivitySettings httpConnectivitySettings, Uri uri) { if (connectivitySettings == null && httpConnectivitySettings == null && ServiceBusEnvironment.SystemConnectivity.Mode == ConnectivityMode.AutoDetect && ConnectivityModeHelper.OverrideInternalConnectivityMode.HasValue) { return(ConnectivityModeHelper.OverrideInternalConnectivityMode.Value); } ConnectivityMode connectivityMode = (connectivitySettings != null ? connectivitySettings.Mode : ServiceBusEnvironment.SystemConnectivity.Mode); return(ConnectivityModeHelper.GetInternalConnectivityMode(connectivityMode, (httpConnectivitySettings != null ? httpConnectivitySettings.Mode : HttpConnectivityMode.AutoDetect), uri)); }