Ejemplo n.º 1
0
        public WriterSystem(ServerId local, QueueConfiguration queueConfiguration,
                            NetReceiverConfiguration receiverConfigurationForWrite,
                            NetReceiverConfiguration receiverConfigurationForCollector,
                            HashMapConfiguration hashMapConfiguration,
                            ConnectionConfiguration connectionConfiguration,
                            RestoreModuleConfiguration transferRestoreConfiguration,
                            RestoreModuleConfiguration initiatorRestoreConfiguration,
                            ConnectionTimeoutConfiguration connectionTimeoutConfiguration,
                            RestoreModuleConfiguration timeoutRestoreConfiguration,
                            bool isNeedRestore = false,
                            QueueConfiguration queueConfigurationRestore = null)
        {
            Contract.Requires(local != null);
            Contract.Requires(queueConfiguration != null);
            Contract.Requires(receiverConfigurationForWrite != null);
            Contract.Requires(receiverConfigurationForCollector != null);
            Contract.Requires(hashMapConfiguration != null);
            Contract.Requires(connectionConfiguration != null);
            Contract.Requires(transferRestoreConfiguration != null);
            Contract.Requires(initiatorRestoreConfiguration != null);

            _queueConfigurationRestore = queueConfigurationRestore ?? new QueueConfiguration(1, 1000);

            _queueConfiguration                = queueConfiguration;
            _receiverConfigurationForWrite     = receiverConfigurationForWrite;
            _receiverConfigurationForCollector = receiverConfigurationForCollector;
            _hashMapConfiguration              = hashMapConfiguration;
            _connectionConfiguration           = connectionConfiguration;
            _initiatorRestoreConfiguration     = initiatorRestoreConfiguration;
            _connectionTimeoutConfiguration    = connectionTimeoutConfiguration;
            _timeoutRestoreConfiguration       = timeoutRestoreConfiguration;
            _isNeedRestore = isNeedRestore;
            _transferRestoreConfiguration = transferRestoreConfiguration;
            _local = local;
        }
Ejemplo n.º 2
0
        public static ChannelFactory <TApi> Connect <TApi>(ServerId server, string serviceName,
                                                           ConnectionTimeoutConfiguration timeoutConfiguration)
        {
            string endPointAddr    = string.Format("net.tcp://{0}:{1}/{2}", server.RemoteHost, server.Port, serviceName);
            var    endpointAddress =
                new EndpointAddress(endPointAddr);

            var tcpBinding = new NetTcpBinding
            {
                Security = { Mode = SecurityMode.None },
                MaxReceivedMessageSize = 2147483647,
                MaxBufferSize          = 2147483647,
                OpenTimeout            = timeoutConfiguration.OpenTimeout,
                SendTimeout            = timeoutConfiguration.SendTimeout,
            };

            try
            {
                var cf = new ChannelFactory <TApi>(tcpBinding, endpointAddress);
                foreach (OperationDescription op in cf.Endpoint.Contract.Operations)
                {
                    var dataContractBehavior = op.Behaviors.Find <DataContractSerializerOperationBehavior>();
                    if (dataContractBehavior != null)
                    {
                        dataContractBehavior.MaxItemsInObjectGraph = int.MaxValue;
                    }
                }
                return(cf);
            }
            catch (Exception e)
            {
                Logger.Logger.Instance.Error(e, "");
                return(null);
            }
        }
Ejemplo n.º 3
0
        protected ProxyApi(NetConfiguration netConfiguration, ProxyConfiguration proxyConfiguration,
                           CommonConfiguration commonConfiguration, TimeoutConfiguration timeoutConfiguration)
        {
            Contract.Requires(netConfiguration != null);
            Contract.Requires(proxyConfiguration != null);
            Contract.Requires(commonConfiguration != null);
            Contract.Requires(timeoutConfiguration != null);

            _isStarted = false;
            _isBuild   = false;
            _isDispose = false;

            var server = new ServerId(netConfiguration.Host, netConfiguration.Port);
            var queue  = new QueueConfiguration(commonConfiguration.CountThreads, commonConfiguration.QueueSize);

            var connection = new ConnectionConfiguration(netConfiguration.WcfServiceName,
                                                         netConfiguration.CountConnectionsToSingleServer);
            var proxyCacheConfiguration  = new ProxyCacheConfiguration(proxyConfiguration.ChangeDistributorTimeoutSec);
            var proxyCacheConfiguration2 = new ProxyCacheConfiguration(proxyConfiguration.SyncOperationsTimeoutSec);
            var netReceiveConfiguration  = new NetReceiverConfiguration(netConfiguration.Port, netConfiguration.Host,
                                                                        netConfiguration.WcfServiceName);
            var async   = new AsyncTasksConfiguration(proxyConfiguration.AsyncUpdateTimeout);
            var ping    = new AsyncTasksConfiguration(proxyConfiguration.AsyncPingTimeout);
            var timeout = new ConnectionTimeoutConfiguration(timeoutConfiguration.OpenTimeout,
                                                             timeoutConfiguration.SendTimeout);

            _proxySystem = new ProxySystem(server, queue, connection,
                                           proxyCacheConfiguration, proxyCacheConfiguration2, netReceiveConfiguration, async, ping, timeout);

            _apis = new Dictionary <string, ProxyHandlerBase>();
        }
Ejemplo n.º 4
0
        public ProxySystem(ServerId local, QueueConfiguration queueConfiguration,
                           ConnectionConfiguration connectionConfiguration,
                           ProxyCacheConfiguration cacheConfiguration,
                           ProxyCacheConfiguration asyncCacheConfiguration,
                           NetReceiverConfiguration receiverConfiguration,
                           AsyncTasksConfiguration asyncGetData,
                           AsyncTasksConfiguration asyncPing, ConnectionTimeoutConfiguration connectionTimeoutConfiguration)
        {
            Contract.Requires(queueConfiguration != null);
            Contract.Requires(connectionConfiguration != null);
            Contract.Requires(cacheConfiguration != null);
            Contract.Requires(asyncCacheConfiguration != null);
            Contract.Requires(receiverConfiguration != null);
            Contract.Requires(asyncGetData != null);
            Contract.Requires(local != null);
            Contract.Requires(asyncPing != null);

            _local = local;
            _queueConfiguration       = queueConfiguration;
            _connectionConfiguration  = connectionConfiguration;
            _cacheConfiguration       = cacheConfiguration;
            _asyncCacheConfiguration  = asyncCacheConfiguration;
            _netReceiverConfiguration = receiverConfiguration;
            _asyncGetData             = asyncGetData;
            _asyncPing = asyncPing;
            _connectionTimeoutConfiguration = connectionTimeoutConfiguration;
        }
Ejemplo n.º 5
0
 protected SingleConnection(ServerId server, ConnectionConfiguration configuration,
                            ConnectionTimeoutConfiguration timeoutConfiguration)
 {
     Server = server;
     _bPool =
         new StableElementsDynamicConnectionPool <T>(
             NetConnector.Connect <T>(Server, configuration.ServiceName, timeoutConfiguration),
             -1, configuration.MaxElementCount);
 }
Ejemplo n.º 6
0
 protected NetModule(ConnectionConfiguration connectionConfiguration, ConnectionTimeoutConfiguration connectionTimeout)
 {
     Contract.Requires(connectionConfiguration != null);
     Contract.Requires(connectionTimeout != null);
     _configuration     = connectionConfiguration;
     _connectionTimeout = connectionTimeout;
     _lock    = new ReaderWriterLockSlim();
     _servers = new Dictionary <ServerId, ISingleConnection>();
 }
Ejemplo n.º 7
0
 public TestProxySystem(ServerId local, QueueConfiguration queueConfiguration,
                        ConnectionConfiguration connectionConfiguration, ProxyCacheConfiguration cacheConfiguration,
                        ProxyCacheConfiguration asyncCacheConfiguration, NetReceiverConfiguration receiverConfiguration,
                        AsyncTasksConfiguration asyncGetData, AsyncTasksConfiguration asyncPing,
                        ConnectionTimeoutConfiguration connectionTimeoutConfiguration)
     : base(
         local, queueConfiguration, connectionConfiguration, cacheConfiguration, asyncCacheConfiguration,
         receiverConfiguration, asyncGetData, asyncPing, connectionTimeoutConfiguration)
 {
 }
Ejemplo n.º 8
0
        public WriterApi(StorageNetConfiguration netConfiguration,
                         StorageConfiguration storageConfiguration, CommonConfiguration commonConfiguration,
                         TimeoutConfiguration timeoutConfiguration, bool isNeedRestore = false,
                         CommonConfiguration restoreConfiguration = null)
        {
            Contract.Requires(netConfiguration != null);
            Contract.Requires(storageConfiguration != null);
            Contract.Requires(commonConfiguration != null);
            Contract.Requires(timeoutConfiguration != null);

            _isStarted = false;
            _isBuild   = false;
            _isDispose = false;

            var server       = new ServerId(netConfiguration.Host, netConfiguration.PortForDitributor);
            var queue        = new QueueConfiguration(commonConfiguration.CountThreads, commonConfiguration.QueueSize);
            var queueRestore = restoreConfiguration == null
                ? new QueueConfiguration(1, 1000)
                : new QueueConfiguration(restoreConfiguration.CountThreads, restoreConfiguration.QueueSize);
            var netReceiveConfiguration = new NetReceiverConfiguration(netConfiguration.PortForDitributor,
                                                                       netConfiguration.Host,
                                                                       netConfiguration.WcfServiceName);
            var netReceiveConfiguration2 = new NetReceiverConfiguration(netConfiguration.PortForCollector,
                                                                        netConfiguration.Host,
                                                                        netConfiguration.WcfServiceName);
            var connection = new ConnectionConfiguration(netConfiguration.WcfServiceName,
                                                         netConfiguration.CountConnectionsToSingleServer);
            var hashMap = new HashMapConfiguration(storageConfiguration.FileWithHashName,
                                                   HashMapCreationMode.ReadFromFile, 1,
                                                   storageConfiguration.CountReplics, HashFileType.Writer);
            var restoreTransfer  = new RestoreModuleConfiguration(1, storageConfiguration.TimeoutSendAnswerInRestore);
            var restoreInitiator = new RestoreModuleConfiguration(storageConfiguration.CountRetryWaitAnswerInRestore,
                                                                  storageConfiguration.TimeoutWaitAnswerInRestore);
            var restoreTimeout = new RestoreModuleConfiguration(-1, storageConfiguration.PeriodStartDelete,
                                                                storageConfiguration.IsForceDelete, storageConfiguration.PeriodDeleteAfterRestore);

            var timeout = new ConnectionTimeoutConfiguration(timeoutConfiguration.OpenTimeout,
                                                             timeoutConfiguration.SendTimeout);

            _writerSystem = new WriterSystem(server, queue, netReceiveConfiguration,
                                             netReceiveConfiguration2, hashMap,
                                             connection, restoreTransfer, restoreInitiator, timeout, restoreTimeout, isNeedRestore, queueRestore);

            _handler = new WriterHandler(_writerSystem);
        }
Ejemplo n.º 9
0
        public CollectorSystem(DistributorHashConfiguration distributorHashConfiguration,
                               HashMapConfiguration hashMapConfiguration,
                               ConnectionConfiguration connectionConfiguration,
                               ConnectionTimeoutConfiguration connectionTimeoutConfiguration,
                               QueueConfiguration queueConfiguration,
                               int serverPageSize, bool useHashFile = true)
        {
            Contract.Requires(distributorHashConfiguration != null);
            Contract.Requires(hashMapConfiguration != null);
            Contract.Requires(connectionConfiguration != null);
            Contract.Requires(connectionTimeoutConfiguration != null);
            Contract.Requires(queueConfiguration != null);
            Contract.Requires(serverPageSize > 0);

            _distributorHashConfiguration   = distributorHashConfiguration;
            _hashMapConfiguration           = hashMapConfiguration;
            _connectionConfiguration        = connectionConfiguration;
            _connectionTimeoutConfiguration = connectionTimeoutConfiguration;
            _queueConfiguration             = queueConfiguration;
            _serverPageSize = serverPageSize;
            _useHashFile    = useHashFile;
        }
Ejemplo n.º 10
0
 public DistributorSystem(ServerId localfordb, ServerId localforproxy,
                          DistributorHashConfiguration distributorHashConfiguration,
                          QueueConfiguration queueConfiguration,
                          ConnectionConfiguration connectionConfiguration,
                          DistributorCacheConfiguration cacheConfiguration,
                          NetReceiverConfiguration receiverConfigurationForDb,
                          NetReceiverConfiguration receiverConfigurationForProxy,
                          TransactionConfiguration transactionConfiguration,
                          HashMapConfiguration hashMapConfiguration, AsyncTasksConfiguration pingConfig,
                          AsyncTasksConfiguration checkConfig, ConnectionTimeoutConfiguration connectionTimeoutConfiguration)
 {
     Contract.Requires(distributorHashConfiguration != null);
     Contract.Requires(_queueConfiguration != null);
     Contract.Requires(connectionConfiguration != null);
     Contract.Requires(cacheConfiguration != null);
     Contract.Requires(receiverConfigurationForDb != null);
     Contract.Requires(receiverConfigurationForProxy != null);
     Contract.Requires(transactionConfiguration != null);
     Contract.Requires(localfordb != null);
     Contract.Requires(localforproxy != null);
     Contract.Requires(hashMapConfiguration != null);
     Contract.Requires(pingConfig != null);
     Contract.Requires(checkConfig != null);
     _pingConfig  = pingConfig;
     _checkConfig = checkConfig;
     _connectionTimeoutConfiguration = connectionTimeoutConfiguration;
     _distributorHashConfiguration   = distributorHashConfiguration;
     _hashMapConfiguration           = hashMapConfiguration;
     _queueConfiguration             = queueConfiguration;
     _connectionConfiguration        = connectionConfiguration;
     _cacheConfiguration             = cacheConfiguration;
     _receiverConfigurationForDb     = receiverConfigurationForDb;
     _receiverConfigurationForProxy  = receiverConfigurationForProxy;
     _transactionConfiguration       = transactionConfiguration;
     _localfordb    = localfordb;
     _localforproxy = localforproxy;
 }
Ejemplo n.º 11
0
        public DistributorApi(DistributorNetConfiguration netConfiguration,
                              DistributorConfiguration distributorConfiguration, CommonConfiguration commonConfiguration,
                              TimeoutConfiguration timeoutConfiguration)
        {
            Contract.Requires(netConfiguration != null);
            Contract.Requires(distributorConfiguration != null);
            Contract.Requires(commonConfiguration != null);
            Contract.Requires(timeoutConfiguration != null);

            var dbServer    = new ServerId(netConfiguration.Host, netConfiguration.PortForStorage);
            var proxyServer = new ServerId(netConfiguration.Host, netConfiguration.PortForProxy);

            var distrHash  = new DistributorHashConfiguration(distributorConfiguration.CountReplics);
            var queue      = new QueueConfiguration(commonConfiguration.CountThreads, commonConfiguration.QueueSize);
            var connection = new ConnectionConfiguration(netConfiguration.WcfServiceName,
                                                         netConfiguration.CountConnectionsToSingleServer);
            var distrCache = new DistributorCacheConfiguration(distributorConfiguration.DataAliveTime,
                                                               distributorConfiguration.DataAliveAfterUpdate);
            var dbNetReceive = new NetReceiverConfiguration(netConfiguration.PortForStorage,
                                                            netConfiguration.Host, netConfiguration.WcfServiceName);
            var proxyNetReceive = new NetReceiverConfiguration(netConfiguration.PortForProxy,
                                                               netConfiguration.Host, netConfiguration.WcfServiceName);
            var transaction = new TransactionConfiguration(commonConfiguration.CountThreads);
            var hashMap     = new HashMapConfiguration(distributorConfiguration.FileWithHashName,
                                                       HashMapCreationMode.ReadFromFile, 1,
                                                       distributorConfiguration.CountReplics, HashFileType.Distributor);
            var asyncPing  = new AsyncTasksConfiguration(distributorConfiguration.PingPeriod);
            var asyncCheck = new AsyncTasksConfiguration(distributorConfiguration.CheckPeriod);
            var timeou     = new ConnectionTimeoutConfiguration(timeoutConfiguration.OpenTimeout,
                                                                timeoutConfiguration.SendTimeout);

            _distributorSystem = new DistributorSystem(dbServer, proxyServer, distrHash, queue, connection, distrCache,
                                                       dbNetReceive, proxyNetReceive, transaction, hashMap, asyncPing, asyncCheck, timeou);

            _handler = new DistributorHandler(_distributorSystem);
        }
Ejemplo n.º 12
0
 public CollectorNetModule(ConnectionConfiguration connectionConfiguration,
                           ConnectionTimeoutConfiguration connectionTimeout, DistributorModule distributor)
     : base(connectionConfiguration, connectionTimeout)
 {
     _distributor = distributor;
 }
Ejemplo n.º 13
0
 public SingleConnectionToDistributor(ServerId server, ConnectionConfiguration configuration,
                                      ConnectionTimeoutConfiguration timeoutConfiguration) : base(server, configuration, timeoutConfiguration)
 {
 }
Ejemplo n.º 14
0
 public SingleConnectionToProxy(ServerId server, ConnectionConfiguration configuration,
                                ConnectionTimeoutConfiguration timeoutConfiguration) : base(server, configuration, timeoutConfiguration)
 {
 }
Ejemplo n.º 15
0
 public DistributorNetModule(ConnectionConfiguration connectionConfiguration,
                             ConnectionTimeoutConfiguration connectionTimeout) : base(connectionConfiguration, connectionTimeout)
 {
 }
Ejemplo n.º 16
0
 protected virtual ISingleConnection CreateConnectionToProxy(ServerId server,
                                                             ConnectionConfiguration configuration, ConnectionTimeoutConfiguration time)
 {
     return(new SingleConnectionToProxy(server, configuration, time));
 }
Ejemplo n.º 17
0
 public ProxyNetModule(ConnectionConfiguration connectionConfiguration,
                       ConnectionTimeoutConfiguration connectionTimeout) : base(connectionConfiguration, connectionTimeout)
 {
 }