Exemplo n.º 1
0
        public static WcfTimeout Parse(string wcfTimeoutStr, WcfTimeout defaultTimeout = null)
        {
            WcfTimeout wcfTimeout = (defaultTimeout != null) ? defaultTimeout.Clone() : new WcfTimeout();

            string[] array = wcfTimeoutStr.Split(new char[]
            {
                ';'
            });
            foreach (string text in array)
            {
                string[] array3 = (from s in text.Split(new char[]
                {
                    '='
                })
                                   select s.Trim()).ToArray <string>();
                if (array3.Length > 1)
                {
                    string text2 = array3[0];
                    string tsStr = array3[1];
                    string a;
                    if ((a = text2) != null)
                    {
                        if (!(a == "open"))
                        {
                            if (!(a == "close"))
                            {
                                if (!(a == "send"))
                                {
                                    if (!(a == "receive"))
                                    {
                                        if (a == "operation")
                                        {
                                            wcfTimeout.Receive = WcfTimeout.StringToTimeSpan(tsStr, wcfTimeout.Receive);
                                        }
                                    }
                                    else
                                    {
                                        wcfTimeout.Receive = WcfTimeout.StringToTimeSpan(tsStr, wcfTimeout.Receive);
                                    }
                                }
                                else
                                {
                                    wcfTimeout.Send = WcfTimeout.StringToTimeSpan(tsStr, wcfTimeout.Send);
                                }
                            }
                            else
                            {
                                wcfTimeout.Close = WcfTimeout.StringToTimeSpan(tsStr, wcfTimeout.Close);
                            }
                        }
                        else
                        {
                            wcfTimeout.Open = WcfTimeout.StringToTimeSpan(tsStr, wcfTimeout.Open);
                        }
                    }
                }
            }
            return(wcfTimeout);
        }
Exemplo n.º 2
0
 public AccessClientFactory(InstanceGroupConfig groupCfg, WcfTimeout timeout = null)
 {
     this.FactoryByTarget = new ConcurrentDictionary <string, Tuple <CachedChannelFactory <IDxStoreAccess>, IDxStoreAccessClient> >();
     this.groupCfg        = groupCfg;
     this.DefaultTimeout  = timeout;
     if (groupCfg.Settings.IsUseHttpTransportForClientCommunication)
     {
         HttpConfiguration.Configure(this.groupCfg);
     }
 }
Exemplo n.º 3
0
 public static void SetTimeout(Binding binding, WcfTimeout timeout)
 {
     EndpointBuilder.IfHasValue <TimeSpan>(timeout.Open, delegate(TimeSpan t)
     {
         binding.OpenTimeout = t;
     });
     EndpointBuilder.IfHasValue <TimeSpan>(timeout.Close, delegate(TimeSpan t)
     {
         binding.CloseTimeout = t;
     });
     EndpointBuilder.IfHasValue <TimeSpan>(timeout.Send, delegate(TimeSpan t)
     {
         binding.SendTimeout = t;
     });
     EndpointBuilder.IfHasValue <TimeSpan>(timeout.Receive, delegate(TimeSpan t)
     {
         binding.ReceiveTimeout = t;
     });
 }
 public ManagerClientFactory(InstanceManagerConfig managerConfig, WcfTimeout timeout = null)
 {
     this.FactoryByTarget = new ConcurrentDictionary <string, Tuple <CachedChannelFactory <IDxStoreManager>, DxStoreManagerClient> >();
     this.managerConfig   = managerConfig;
     this.DefaultTimeout  = timeout;
 }
Exemplo n.º 5
0
        public static BasicHttpBinding CreateHttpBindingAndInitialize(string bindingName, WcfTimeout timeout, bool isServerBinding)
        {
            BasicHttpBinding basicHttpBinding = new BasicHttpBinding();

            basicHttpBinding.Name = bindingName;
            basicHttpBinding.MaxBufferPoolSize      = (long)EndpointBuilder.MebiBytes(64);
            basicHttpBinding.MaxBufferSize          = EndpointBuilder.MebiBytes(64);
            basicHttpBinding.MaxReceivedMessageSize = (long)EndpointBuilder.MebiBytes(64);
            if (isServerBinding)
            {
                EndpointBuilder.SetReaderQuotas(basicHttpBinding.ReaderQuotas);
            }
            else
            {
                EndpointBuilder.SetTimeout(basicHttpBinding, timeout);
            }
            return(basicHttpBinding);
        }
Exemplo n.º 6
0
        public static Binding CreateBindingAndInitialize(string address, string bindingName, WcfTimeout timeout, bool isServerBinding)
        {
            string  a = address.Substring(0, address.IndexOf(':'));
            Binding result;

            if (Utils.IsEqual(a, "http", StringComparison.OrdinalIgnoreCase))
            {
                result = EndpointBuilder.CreateHttpBindingAndInitialize(bindingName, timeout, isServerBinding);
            }
            else if (Utils.IsEqual(a, "net.tcp", StringComparison.OrdinalIgnoreCase))
            {
                result = EndpointBuilder.CreateNettcpBindingAndInitialize(bindingName, timeout, isServerBinding);
            }
            else
            {
                if (!Utils.IsEqual(a, "net.pipe", StringComparison.OrdinalIgnoreCase))
                {
                    throw new DxStoreBindingNotSupportedException(address);
                }
                result = EndpointBuilder.CreateNamedPipeBindingAndInitialize(bindingName, timeout, isServerBinding);
            }
            return(result);
        }
Exemplo n.º 7
0
        public static ServiceEndpoint GetStoreInstanceEndpoint(InstanceGroupConfig cfg, string target, bool isUseDefaultGroup, bool isServerBinding, WcfTimeout timeout = null)
        {
            string storeInstanceEndPointAddress = cfg.GetStoreInstanceEndPointAddress(target, isUseDefaultGroup);
            string bindingName = cfg.ConstructUniqueInstanceBindingName(target, isUseDefaultGroup);

            timeout = (timeout ?? cfg.Settings.StoreInstanceWcfTimeout);
            return(EndpointBuilder.ConstructAndInitializeEndpoint(typeof(IDxStoreInstance), storeInstanceEndPointAddress, bindingName, timeout, isServerBinding));
        }
Exemplo n.º 8
0
        public static ServiceEndpoint GetStoreManagerEndpoint(InstanceManagerConfig cfg, string target, bool isServerBinding, WcfTimeout timeout = null)
        {
            string endPointAddress = cfg.GetEndPointAddress(target);
            string bindingName     = cfg.ConstructUniqueBindingName(target);

            timeout = (timeout ?? cfg.DefaultTimeout);
            return(EndpointBuilder.ConstructAndInitializeEndpoint(typeof(IDxStoreManager), endPointAddress, bindingName, timeout, isServerBinding));
        }
Exemplo n.º 9
0
        public static ServiceEndpoint ConstructAndInitializeEndpoint(Type interfaceType, string address, string bindingName, WcfTimeout timeout, bool isServerBinding)
        {
            Binding binding = EndpointBuilder.CreateBindingAndInitialize(address, bindingName, timeout, isServerBinding);

            return(new ServiceEndpoint(ContractDescription.GetContract(interfaceType), binding, new EndpointAddress(address)));
        }
Exemplo n.º 10
0
        public static NetTcpBinding CreateNettcpBindingAndInitialize(string bindingName, WcfTimeout timeout, bool isServerBinding)
        {
            NetTcpBinding netTcpBinding = new NetTcpBinding();

            netTcpBinding.Name = bindingName;
            netTcpBinding.MaxBufferPoolSize      = (long)EndpointBuilder.MebiBytes(64);
            netTcpBinding.MaxBufferSize          = EndpointBuilder.MebiBytes(64);
            netTcpBinding.MaxReceivedMessageSize = (long)EndpointBuilder.MebiBytes(64);
            netTcpBinding.MaxConnections         = 200;
            if (isServerBinding)
            {
                netTcpBinding.PortSharingEnabled = true;
                EndpointBuilder.SetReaderQuotas(netTcpBinding.ReaderQuotas);
            }
            else
            {
                EndpointBuilder.SetTimeout(netTcpBinding, timeout);
                EndpointBuilder.SetBindingSecurity(netTcpBinding.Security);
            }
            return(netTcpBinding);
        }
Exemplo n.º 11
0
        public static Dictionary <string, ServiceEndpoint> GetAllMemberAccessClientEndPoints(this InstanceGroupConfig cfg, bool isUseDefaultGroup = false, WcfTimeout timeout = null)
        {
            Dictionary <string, ServiceEndpoint> dictionary = new Dictionary <string, ServiceEndpoint>();

            foreach (InstanceGroupMemberConfig instanceGroupMemberConfig in cfg.Members)
            {
                ServiceEndpoint storeAccessEndpoint = cfg.GetStoreAccessEndpoint(instanceGroupMemberConfig.Name, false, false, timeout ?? cfg.Settings.StoreAccessWcfTimeout);
                dictionary[instanceGroupMemberConfig.Name] = storeAccessEndpoint;
            }
            return(dictionary);
        }
Exemplo n.º 12
0
        internal static WcfTimeout GetWcfTimeoutProperty(RegistryKey key, string propertyName, WcfTimeout defaultTimeout)
        {
            string property = RegUtils.GetProperty <string>(key, propertyName, string.Empty);

            return(WcfTimeout.Parse(property, defaultTimeout));
        }
Exemplo n.º 13
0
 public virtual ServiceEndpoint GetStoreInstanceEndpoint(string target, bool isUseDefaultGroup, bool isServerBinding, WcfTimeout timeout = null)
 {
     return(EndpointBuilder.GetStoreInstanceEndpoint(this, target, isUseDefaultGroup, isServerBinding, timeout));
 }
Exemplo n.º 14
0
 public InstanceClientFactory(InstanceGroupConfig groupCfg, WcfTimeout timeout = null)
 {
     this.FactoryByTarget = new ConcurrentDictionary <string, Tuple <CachedChannelFactory <IDxStoreInstance>, DxStoreInstanceClient> >();
     this.groupCfg        = groupCfg;
     this.DefaultTimeout  = timeout;
 }
Exemplo n.º 15
0
        public CommonSettings CreateDefaultCommonSettings(int defaultEndPointPortNumber, string defaultProtocolName, WcfTimeout defaultTimeout)
        {
            CommonSettings input = new CommonSettings
            {
                InstanceProcessName                 = this.DefaultInstanceProcessFullPath,
                AccessEndpointPortNumber            = defaultEndPointPortNumber,
                AccessEndpointProtocolName          = defaultProtocolName,
                StoreAccessWcfTimeout               = defaultTimeout,
                StoreAccessHttpTimeoutInMSec        = 60000,
                InstanceEndpointPortNumber          = defaultEndPointPortNumber,
                InstanceEndpointProtocolName        = defaultProtocolName,
                StoreInstanceWcfTimeout             = defaultTimeout,
                DurationToWaitBeforeRestart         = TimeSpan.FromMinutes(2.0),
                InstanceHealthCheckPeriodicInterval = TimeSpan.FromSeconds(30.0),
                TruncationPeriodicCheckInterval     = TimeSpan.FromSeconds(15.0),
                TruncationLimit                             = 1000,
                TruncationPaddingLength                     = 500,
                StateMachineStopTimeout                     = TimeSpan.FromSeconds(30.0),
                LeaderPromotionTimeout                      = TimeSpan.FromSeconds(30.0),
                PaxosCommandExecutionTimeout                = TimeSpan.FromSeconds(30.0),
                GroupHealthCheckDuration                    = TimeSpan.FromSeconds(15.0),
                GroupHealthCheckAggressiveDuration          = TimeSpan.FromSeconds(10.0),
                GroupStatusWaitTimeout                      = TimeSpan.FromSeconds(15.0),
                MaxEntriesToKeep                            = 10,
                MaximumAllowedInstanceNumberLag             = 5,
                DefaultHealthCheckRequiredNodePercent       = 51,
                MemberReconfigureTimeout                    = TimeSpan.FromSeconds(30.0),
                PaxosUpdateTimeout                          = TimeSpan.FromSeconds(30.0),
                SnapshotUpdateInterval                      = TimeSpan.FromSeconds(30.0),
                PeriodicExceptionLoggingDuration            = TimeSpan.FromMinutes(5.0),
                PeriodicTimeoutLoggingDuration              = TimeSpan.FromMinutes(5.0),
                ServiceHostCloseTimeout                     = TimeSpan.FromSeconds(60.0),
                MaxAllowedLagToCatchup                      = 200,
                DefaultSnapshotFileName                     = "DxStoreSnapshot.xml",
                IsAllowDynamicReconfig                      = false,
                IsAppendOnlyMembership                      = true,
                IsKillInstanceProcessWhenParentDies         = true,
                AdditionalLogOptions                        = LogOptions.None,
                InstanceStartHoldUpDuration                 = TimeSpan.FromHours(1.0),
                InstanceStartHoldupDurationMaxAllowedStarts = 10,
                InstanceStartSilenceDuration                = TimeSpan.FromMinutes(5.0),
                InstanceMemoryCommitSizeLimitInMb           = 500,
                IsUseHttpTransportForInstanceCommunication  = true,
                IsUseHttpTransportForClientCommunication    = true,
                IsUseBinarySerializerForClientCommunication = false,
                IsUseEncryption                             = true,
                StartupDelay = TimeSpan.Zero
            };

            return(this.UpdateDefaultCommonSettings(input));
        }
Exemplo n.º 16
0
 public virtual ServiceEndpoint GetEndpoint(string target, bool isServerBinding, WcfTimeout timeout = null)
 {
     return(EndpointBuilder.GetStoreManagerEndpoint(this, target, isServerBinding, timeout));
 }