예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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;
            }
            }
        }
예제 #4
0
        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));
        }