public IAsyncResult BeginConnect(Uri uri, TimeSpan timeout, AsyncCallback callback, object state) { this.mode = this.cache.GetInternalConnectivityMode(uri); switch (this.mode) { case InternalConnectivityMode.Tcp: { return(this.TcpConnectionInitiator.BeginConnect(uri, timeout, callback, state)); } case InternalConnectivityMode.Http: { return(this.HttpConnectionInitiator.BeginConnect(uri, timeout, callback, state)); } case InternalConnectivityMode.Https: { this.useWebSocket = false; return(this.HttpsConnectionInitiator.BeginConnect(uri, timeout, callback, state)); } case InternalConnectivityMode.HttpsWebSocket: { this.useWebSocket = true; return(this.HttpsConnectionInitiator.BeginConnect(uri, timeout, callback, state)); } } throw new InvalidOperationException(SRClient.UnsupportedConnectivityMode(this.mode)); }
public IConnection Connect(Uri uri, TimeSpan timeout) { InternalConnectivityMode internalConnectivityMode = this.cache.GetInternalConnectivityMode(uri); switch (internalConnectivityMode) { case InternalConnectivityMode.Tcp: { return(this.TcpConnectionInitiator.Connect(uri, timeout)); } case InternalConnectivityMode.Http: { return(this.HttpConnectionInitiator.Connect(uri, timeout)); } case InternalConnectivityMode.Https: { this.useWebSocket = false; return(this.HttpsConnectionInitiator.Connect(uri, timeout)); } case InternalConnectivityMode.HttpsWebSocket: { this.useWebSocket = true; return(this.HttpsConnectionInitiator.Connect(uri, timeout)); } } throw new InvalidOperationException(SRClient.UnsupportedConnectivityMode(internalConnectivityMode)); }
public static void SetConnectivityMode(InternalConnectivityMode mode) { switch (mode) { case InternalConnectivityMode.Tcp: { NetworkDetector.tcpConnectivityStatus = 2; NetworkDetector.httpsWebSocketConnectivityStatus = 3; NetworkDetector.httpWebStreamConnectivityStatus = 3; NetworkDetector.httpsWebStreamConnectivityStatus = 3; NetworkDetector.httpConnectivityStatus = 3; return; } case InternalConnectivityMode.Http: { NetworkDetector.tcpConnectivityStatus = 3; NetworkDetector.httpsWebSocketConnectivityStatus = 3; NetworkDetector.httpWebStreamConnectivityStatus = 2; NetworkDetector.httpsWebStreamConnectivityStatus = 3; NetworkDetector.httpConnectivityStatus = 2; return; } case InternalConnectivityMode.Https: { NetworkDetector.tcpConnectivityStatus = 3; NetworkDetector.httpsWebStreamConnectivityStatus = 2; NetworkDetector.httpsWebSocketConnectivityStatus = 3; NetworkDetector.httpWebStreamConnectivityStatus = 3; NetworkDetector.httpConnectivityStatus = 3; return; } case InternalConnectivityMode.HttpsWebSocket: { NetworkDetector.tcpConnectivityStatus = 3; NetworkDetector.httpsWebSocketConnectivityStatus = 2; NetworkDetector.httpsWebStreamConnectivityStatus = 3; NetworkDetector.httpWebStreamConnectivityStatus = 3; NetworkDetector.httpConnectivityStatus = 3; return; } default: { return; } } }
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)); }