Example #1
0
        public UnitOfWork(ISqlConnectionFactory sqlConnectionFactory, TransactionConfiguration transactionConfiguration)
        {
            Ensure.That(sqlConnectionFactory).IsNotNull();

            _sqlConnectionFactory     = sqlConnectionFactory;
            _transactionConfiguration = transactionConfiguration;
        }
Example #2
0
        public TransactionModule(QueueConfiguration configuration, INetModule net, TransactionConfiguration transactionConfiguration,
                                 DistributorHashConfiguration distributorHashConfiguration)
        {
            Contract.Requires(net != null);
            Contract.Requires(transactionConfiguration != null);
            Contract.Requires(distributorHashConfiguration != null);
            Contract.Requires(configuration != null);

            _queueConfiguration = configuration;
            _transactionPool    = new TransactionPool(transactionConfiguration.ElementsCount, net,
                                                      distributorHashConfiguration);
            CountReplics = distributorHashConfiguration.CountReplics;
            _net         = net;
            _queue       = GlobalQueue.Queue;
        }
Example #3
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;
 }
Example #4
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);
        }
Example #5
0
 /// <summary>
 /// Obtiene una transacción que permite leer y escribir información
 /// desde el contexto de datos.
 /// </summary>
 /// <param name="configuration">
 /// Confiuración de transacción a utilizar.
 /// </param>
 /// <returns>
 /// Una transacción que permite leer y escribir información desde el
 /// contexto de datos.
 /// </returns>
 public ICrudReadWriteTransaction GetTransaction(TransactionConfiguration configuration)
 {
     return(new CrudTransaction <T>(configuration));
 }
Example #6
0
        /// <summary>
        /// Reads data from specified reader into current instance.
        /// </summary>
        /// <param name="r">The binary reader.</param>
        private void ReadCore(IBinaryRawReader r)
        {
            // Simple properties
            _clientMode             = r.ReadBooleanNullable();
            IncludedEventTypes      = r.ReadIntArray();
            _metricsExpireTime      = r.ReadTimeSpanNullable();
            _metricsHistorySize     = r.ReadIntNullable();
            _metricsLogFrequency    = r.ReadTimeSpanNullable();
            _metricsUpdateFrequency = r.ReadTimeSpanNullable();
            _networkSendRetryCount  = r.ReadIntNullable();
            _networkSendRetryDelay  = r.ReadTimeSpanNullable();
            _networkTimeout         = r.ReadTimeSpanNullable();
            WorkDirectory           = r.ReadString();
            Localhost = r.ReadString();
            _isDaemon = r.ReadBooleanNullable();
            _isLateAffinityAssignment = r.ReadBooleanNullable();
            _failureDetectionTimeout  = r.ReadTimeSpanNullable();

            // Cache config
            var cacheCfgCount = r.ReadInt();

            CacheConfiguration = new List <CacheConfiguration>(cacheCfgCount);
            for (int i = 0; i < cacheCfgCount; i++)
            {
                CacheConfiguration.Add(new CacheConfiguration(r));
            }

            // Discovery config
            DiscoverySpi = r.ReadBoolean() ? new TcpDiscoverySpi(r) : null;

            // Communication config
            CommunicationSpi = r.ReadBoolean() ? new TcpCommunicationSpi(r) : null;

            // Binary config
            if (r.ReadBoolean())
            {
                BinaryConfiguration = BinaryConfiguration ?? new BinaryConfiguration();

                if (r.ReadBoolean())
                {
                    BinaryConfiguration.CompactFooter = r.ReadBoolean();
                }

                var typeCount = r.ReadInt();

                if (typeCount > 0)
                {
                    var types = new List <BinaryTypeConfiguration>(typeCount);

                    for (var i = 0; i < typeCount; i++)
                    {
                        types.Add(new BinaryTypeConfiguration
                        {
                            TypeName         = r.ReadString(),
                            IsEnum           = r.ReadBoolean(),
                            EqualityComparer = BinaryEqualityComparerSerializer.Read(r)
                        });
                    }

                    BinaryConfiguration.TypeConfigurations = types;
                }
            }

            // User attributes
            UserAttributes = Enumerable.Range(0, r.ReadInt())
                             .ToDictionary(x => r.ReadString(), x => r.ReadObject <object>());

            // Atomic
            if (r.ReadBoolean())
            {
                AtomicConfiguration = new AtomicConfiguration
                {
                    AtomicSequenceReserveSize = r.ReadInt(),
                    Backups   = r.ReadInt(),
                    CacheMode = (CacheMode)r.ReadInt()
                };
            }

            // Tx
            if (r.ReadBoolean())
            {
                TransactionConfiguration = new TransactionConfiguration
                {
                    PessimisticTransactionLogSize = r.ReadInt(),
                    DefaultTransactionConcurrency = (TransactionConcurrency)r.ReadInt(),
                    DefaultTransactionIsolation   = (TransactionIsolation)r.ReadInt(),
                    DefaultTimeout = TimeSpan.FromMilliseconds(r.ReadLong()),
                    PessimisticTransactionLogLinger = TimeSpan.FromMilliseconds(r.ReadInt())
                };
            }

            // Swap
            SwapSpaceSpi = SwapSpaceSerializer.Read(r);
        }
Example #7
0
 /// <summary>
 /// Inicializa una nueva instancia de la clase
 /// <see cref="InMemoryCrudTransaction"/>.
 /// </summary>
 /// <param name="configuration">
 /// Configuración de transacciones a utilizar.
 /// </param>
 public InMemoryCrudTransaction(TransactionConfiguration configuration)
 {
     Configuration = configuration;
 }
Example #8
0
 /// <summary>
 /// Inicializa una nueva instancia de la clase
 /// <see cref="CrudTransaction{T}"/>.
 /// </summary>
 /// <param name="configuration">
 /// Configuración a pasar a las transacciones subyacentes.
 /// </param>
 public CrudTransaction(TransactionConfiguration configuration) : base(configuration)
 {
     _readTransaction  = new CrudReadTransaction <T>(configuration, _context);
     _writeTransaction = new CrudWriteTransaction <T>(configuration, _context);
 }
Example #9
0
 internal CrudWriteTransaction(TransactionConfiguration configuration, T context) : base(configuration, context)
 {
 }
Example #10
0
 /// <summary>
 /// Inicializa una nueva instancia de la clase
 /// <see cref="Service"/>, buscando automáticamente la
 /// configuración de transacciones a utilizar.
 /// </summary>
 /// <param name="transactionConfiguration">
 /// Configuración a utilizar para las transacciones generadas por este
 /// servicio.
 /// </param>
 public Service(TransactionConfiguration transactionConfiguration) : this(transactionConfiguration, FindT <ITransactionFactory>())
 {
 }
Example #11
0
        /// <summary>
        /// Reads data from specified reader into current instance.
        /// </summary>
        /// <param name="r">The binary reader.</param>
        private void ReadCore(BinaryReader r)
        {
            // Simple properties
            _clientMode             = r.ReadBooleanNullable();
            IncludedEventTypes      = r.ReadIntArray();
            _metricsExpireTime      = r.ReadTimeSpanNullable();
            _metricsHistorySize     = r.ReadIntNullable();
            _metricsLogFrequency    = r.ReadTimeSpanNullable();
            _metricsUpdateFrequency = r.ReadTimeSpanNullable();
            _networkSendRetryCount  = r.ReadIntNullable();
            _networkSendRetryDelay  = r.ReadTimeSpanNullable();
            _networkTimeout         = r.ReadTimeSpanNullable();
            WorkDirectory           = r.ReadString();
            Localhost = r.ReadString();
            _isDaemon = r.ReadBooleanNullable();
            _isLateAffinityAssignment      = r.ReadBooleanNullable();
            _failureDetectionTimeout       = r.ReadTimeSpanNullable();
            _clientFailureDetectionTimeout = r.ReadTimeSpanNullable();
            _longQueryWarningTimeout       = r.ReadTimeSpanNullable();
            _isActiveOnStart = r.ReadBooleanNullable();

            // Thread pools
            _publicThreadPoolSize        = r.ReadIntNullable();
            _stripedThreadPoolSize       = r.ReadIntNullable();
            _serviceThreadPoolSize       = r.ReadIntNullable();
            _systemThreadPoolSize        = r.ReadIntNullable();
            _asyncCallbackThreadPoolSize = r.ReadIntNullable();
            _managementThreadPoolSize    = r.ReadIntNullable();
            _dataStreamerThreadPoolSize  = r.ReadIntNullable();
            _utilityCacheThreadPoolSize  = r.ReadIntNullable();
            _queryThreadPoolSize         = r.ReadIntNullable();

            // Cache config
            var cacheCfgCount = r.ReadInt();

            CacheConfiguration = new List <CacheConfiguration>(cacheCfgCount);
            for (int i = 0; i < cacheCfgCount; i++)
            {
                CacheConfiguration.Add(new CacheConfiguration(r));
            }

            // Discovery config
            DiscoverySpi = r.ReadBoolean() ? new TcpDiscoverySpi(r) : null;

            // Communication config
            CommunicationSpi = r.ReadBoolean() ? new TcpCommunicationSpi(r) : null;

            // Binary config
            if (r.ReadBoolean())
            {
                BinaryConfiguration = BinaryConfiguration ?? new BinaryConfiguration();

                if (r.ReadBoolean())
                {
                    BinaryConfiguration.CompactFooter = r.ReadBoolean();
                }

                if (r.ReadBoolean())
                {
                    BinaryConfiguration.NameMapper = BinaryBasicNameMapper.SimpleNameInstance;
                }
            }

            // User attributes
            UserAttributes = Enumerable.Range(0, r.ReadInt())
                             .ToDictionary(x => r.ReadString(), x => r.ReadObject <object>());

            // Atomic
            if (r.ReadBoolean())
            {
                AtomicConfiguration = new AtomicConfiguration
                {
                    AtomicSequenceReserveSize = r.ReadInt(),
                    Backups   = r.ReadInt(),
                    CacheMode = (CacheMode)r.ReadInt()
                };
            }

            // Tx
            if (r.ReadBoolean())
            {
                TransactionConfiguration = new TransactionConfiguration
                {
                    PessimisticTransactionLogSize = r.ReadInt(),
                    DefaultTransactionConcurrency = (TransactionConcurrency)r.ReadInt(),
                    DefaultTransactionIsolation   = (TransactionIsolation)r.ReadInt(),
                    DefaultTimeout = TimeSpan.FromMilliseconds(r.ReadLong()),
                    PessimisticTransactionLogLinger = TimeSpan.FromMilliseconds(r.ReadInt())
                };
            }

            // Event storage
            switch (r.ReadByte())
            {
            case 1: EventStorageSpi = new NoopEventStorageSpi();
                break;

            case 2:
                EventStorageSpi = MemoryEventStorageSpi.Read(r);
                break;
            }

            if (r.ReadBoolean())
            {
                MemoryConfiguration = new MemoryConfiguration(r);
            }

            // SQL
            if (r.ReadBoolean())
            {
                SqlConnectorConfiguration = new SqlConnectorConfiguration(r);
            }

            // Persistence.
            if (r.ReadBoolean())
            {
                PersistentStoreConfiguration = new PersistentStoreConfiguration(r);
            }
        }
Example #12
0
 /// <summary>
 /// Agrega una nueva instancia de un servicio de notificación de
 /// eventos Crud a todas las transacciones de datos.
 /// </summary>
 /// <typeparam name="T">
 /// Tipo de servicio de notificación a instanciar.
 /// </typeparam>
 /// <param name="config">
 /// Objeto de configuración de transacciones a configurar.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="config"/>.
 /// </returns>
 public static TransactionConfiguration AddNotifyService <T>(this TransactionConfiguration config) where T : ICrudNotifier, new()
 {
     return(AddNotifyService(config, new T()));
 }
Example #13
0
 /// <summary>
 /// Construye un nuevo servicio simple utilizando un
 /// <see cref="EfCoreTransFactory{T}"/> para conectarse a un contexto
 /// de datos.
 /// </summary>
 /// <param name="configuration">
 /// Configuración de transacciones a aplicar al nuevo servicio.
 /// </param>
 /// <returns>
 /// Un nuevo servicio con la configuración especificada, utilizando un
 /// <see cref="EfCoreTransFactory{T}"/> para conectarse a un contexto
 /// de datos.
 /// </returns>
 public static IService BuildService(TransactionConfiguration configuration)
 {
     return(new Service(configuration, new EfCoreTransFactory <T>()));
 }
        /// <summary>
        /// Reads data from specified reader into current instance.
        /// </summary>
        /// <param name="r">The binary reader.</param>
        private void ReadCore(BinaryReader r)
        {
            // Simple properties
            ClientMode         = r.ReadBoolean();
            IncludedEventTypes = r.ReadIntArray();

            MetricsExpireTime      = r.ReadLongAsTimespan();
            MetricsHistorySize     = r.ReadInt();
            MetricsLogFrequency    = r.ReadLongAsTimespan();
            MetricsUpdateFrequency = r.ReadLongAsTimespan();
            NetworkSendRetryCount  = r.ReadInt();
            NetworkSendRetryDelay  = r.ReadLongAsTimespan();
            NetworkTimeout         = r.ReadLongAsTimespan();
            WorkDirectory          = r.ReadString();
            Localhost = r.ReadString();
            IsDaemon  = r.ReadBoolean();

            // Cache config
            var cacheCfgCount = r.ReadInt();

            CacheConfiguration = new List <CacheConfiguration>(cacheCfgCount);
            for (int i = 0; i < cacheCfgCount; i++)
            {
                CacheConfiguration.Add(new CacheConfiguration(r));
            }

            // Discovery config
            DiscoverySpi = r.ReadBoolean() ? new TcpDiscoverySpi(r) : null;

            // Binary config
            if (r.ReadBoolean())
            {
                BinaryConfiguration = BinaryConfiguration ?? new BinaryConfiguration();
                BinaryConfiguration.CompactFooter = r.ReadBoolean();
            }

            // User attributes
            UserAttributes = Enumerable.Range(0, r.ReadInt())
                             .ToDictionary(x => r.ReadString(), x => r.ReadObject <object>());

            // Atomic
            if (r.ReadBoolean())
            {
                AtomicConfiguration = new AtomicConfiguration
                {
                    AtomicSequenceReserveSize = r.ReadInt(),
                    Backups   = r.ReadInt(),
                    CacheMode = (CacheMode)r.ReadInt()
                };
            }

            // Tx
            if (r.ReadBoolean())
            {
                TransactionConfiguration = new TransactionConfiguration
                {
                    PessimisticTransactionLogSize = r.ReadInt(),
                    DefaultTransactionConcurrency = (TransactionConcurrency)r.ReadInt(),
                    DefaultTransactionIsolation   = (TransactionIsolation)r.ReadInt(),
                    DefaultTimeout = TimeSpan.FromMilliseconds(r.ReadLong()),
                    PessimisticTransactionLogLinger = TimeSpan.FromMilliseconds(r.ReadInt())
                };
            }
        }
Example #15
0
 /// <summary>
 /// Fabrica una transaccion conectada a un almacén volátil sin
 /// persistencia en la memoria de la aplicación.
 /// </summary>
 /// <param name="configuration">
 /// Configuración de transacción a utilizar.
 /// </param>
 /// <returns>
 /// Una transacción conectada a un almacén volátil sin persistencia en
 /// la memoria de la aplicación.
 /// </returns>
 public ICrudReadWriteTransaction GetTransaction(TransactionConfiguration configuration)
 {
     return(new InMemoryCrudTransaction(configuration));
 }
Example #16
0
 /// <summary>
 /// Configura la transacción para simular las operaciones sin realizar
 /// ninguna acción.
 /// </summary>
 /// <param name="config">
 /// Configuración de transacción sobre la cual aplicar.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="config"/>, permitiendo
 /// utilizar sintaxis Fluent.
 /// </returns>
 public static TransactionConfiguration UseSimulation(this TransactionConfiguration config)
 {
     if (_config is { })
Example #17
0
 /// <summary>
 /// Inicializa una nueva instancia de la clase
 /// <see cref="Service"/>, especificando la configuración a utilizar.
 /// </summary>
 /// <param name="transactionConfiguration">
 /// Configuración a utilizar para las transacciones generadas por este
 /// servicio.
 /// </param>
 /// <param name="factory">Fábrica de transacciones a utilizar.</param>
 public Service(TransactionConfiguration transactionConfiguration, ITransactionFactory factory)
 {
     Configuration = transactionConfiguration ?? throw new ArgumentNullException(nameof(transactionConfiguration));
     _factory      = factory ?? throw new ArgumentNullException(nameof(factory));
 }
Example #18
0
 /// <summary>
 /// Agrega un servicio de notificación de eventos Crud a todas las
 /// transacciones de datos.
 /// </summary>
 /// <typeparam name="T">
 /// Tipo de servicio de notificación a agregar.
 /// </typeparam>
 /// <param name="config">
 /// Objeto de configuración de transacciones a configurar.
 /// </param>
 /// <param name="crudNotifier">
 /// Instancia de un servicio de notificaciones de eventos Crud a
 /// agregar a las transacciones de datos.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="config"/>.
 /// </returns>
 public static TransactionConfiguration AddNotifyService <T>(this TransactionConfiguration config, T crudNotifier) where T : ICrudNotifier
 {
     return(config.AddEpilog(crudNotifier.PushInto(_notifiers).NotifyPeers));
 }
Example #19
0
        public void ClientProxy_CrudOperations()
        {
            const int distrServer1  = 22206;
            const int distrServer12 = 22207;
            const int storageServer = 22208;

            #region hell

            var writer = new HashWriter(new HashMapConfiguration("TestClientProxy", HashMapCreationMode.CreateNew, 1, 1, HashFileType.Distributor));
            writer.CreateMap();
            writer.SetServer(0, "localhost", storageServer, 157);
            writer.Save();

            var distrHash    = new DistributorHashConfiguration(1);
            var queue        = new QueueConfiguration(1, 100);
            var connection   = new ConnectionConfiguration("testService", 10);
            var distrCache   = new DistributorCacheConfiguration(TimeSpan.FromMilliseconds(10000), TimeSpan.FromMilliseconds(1000000));
            var netReceive1  = new NetReceiverConfiguration(distrServer1, "localhost", "testService");
            var netReceive12 = new NetReceiverConfiguration(distrServer12, "localhost", "testService");
            var trans        = new TransactionConfiguration(1);
            var hashMap      = new HashMapConfiguration("TestClientProxy", HashMapCreationMode.ReadFromFile, 1, 1, HashFileType.Writer);
            var async        = new AsyncTasksConfiguration(TimeSpan.FromSeconds(10));

            var distr = new DistributorSystem(new ServerId("localhost", distrServer1),
                                              new ServerId("localhost", distrServer12),
                                              distrHash, queue, connection, distrCache, netReceive1, netReceive12, trans,
                                              new HashMapConfiguration("TestClientProxy", HashMapCreationMode.ReadFromFile, 1, 1,
                                                                       HashFileType.Distributor), async, async,
                                              new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout));

            var netReceivedb = new NetReceiverConfiguration(storageServer, "localhost", "testService");
            var restore      = new RestoreModuleConfiguration(4, TimeSpan.FromMinutes(1));

            var storage = new WriterSystem(new ServerId("localhost", storageServer), queue,
                                           netReceivedb, new NetReceiverConfiguration(1, "fake", "fake"), hashMap, connection, restore, restore,
                                           new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout),
                                           new RestoreModuleConfiguration(-1, TimeSpan.FromHours(1), false, TimeSpan.FromHours(1)));

            #endregion

            distr.Build();
            distr.Start();

            _proxy.Int.SayIAmHere("localhost", distrServer12);

            storage.Build();
            storage.DbModule.AddDbModule(new TestDbInMemory());
            storage.Start();

            const int count = 50;

            for (int i = 0; i < count; i++)
            {
                var state = _proxy.Int.CreateSync(i, i);
                Assert.AreEqual(RequestState.Complete, state.State);
            }

            for (int i = 0; i < count; i++)
            {
                RequestDescription description;
                var read = _proxy.Int.Read(i, out description);

                Assert.AreEqual(i, read);
                Assert.AreEqual(RequestState.Complete, description.State);
            }

            for (int i = 0; i < count; i++)
            {
                var state = _proxy.Int.DeleteSync(i);
                Assert.AreEqual(RequestState.Complete, state.State);
            }

            for (int i = 0; i < count; i++)
            {
                RequestDescription description;
                _proxy.Int.Read(i, out description);

                Assert.AreEqual(RequestState.DataNotFound, description.State);
            }

            distr.Dispose();
            storage.Dispose();
        }
Example #20
0
 /// <summary>
 /// Inicializa una nueva instancia de la clase
 /// <see cref="CrudWriteTransaction{T}"/>.
 /// </summary>
 /// <param name="configuration">
 /// Configuración a utilizar para la transacción.
 /// </param>
 public CrudWriteTransaction(TransactionConfiguration configuration) : base(configuration)
 {
 }
Example #21
0
 /// <summary>
 /// Inicializa una nueva instancia de la clase
 /// <see cref="CrudReadTransaction{T}"/>.
 /// </summary>
 /// <param name="configuration">
 /// Configuración a utilizar para la transacción.
 /// </param>
 public CrudReadTransaction(TransactionConfiguration configuration) : base(configuration)
 {
 }