public ReplicaStatusTable(LightningPersistence lmdb, string tableName, string replicaId)
        {
            _lmdb      = lmdb;
            _replicaId = replicaId;
            _table     = _lmdb.OpenTable(tableName);

            _clockKey    = new TableKey(KEY_CLOCK);
            _countersKey = new TableKey(KEY_COUNTERS);
        }
Exemple #2
0
        public void TestCreateTable()
        {
            using (var persistence = new LightningPersistence(_config))
            {
                using (var table = persistence.OpenTable("testtable"))
                {
                }
            }

            Assert.Pass();
        }
Exemple #3
0
 public ReplicatorSource(LightningPersistence lmdb, string ownReplicaId,
                         KvTable kvTable, WriteLogTable wlTable,
                         ReplicationConfig replicationConfig, CancellationToken cancellationToken,
                         Func <SyncPacket, Task> responseStreamWriteAsync)
 {
     _lmdb              = lmdb;
     _ownReplicaId      = ownReplicaId;
     _kvTable           = kvTable;
     _wlTable           = wlTable;
     _replicationConfig = replicationConfig;
     _cancellationToken = cancellationToken;
     (_pumpTask, _responseStreamWriteAsync) = StartBufferedWrites(responseStreamWriteAsync);
 }
Exemple #4
0
 public ReplicatorSink(LightningPersistence lmdb, string targetReplicaId,
                       KvTable kvTable, ReplicationTable replicationTable,
                       ReplicationConfig replicationConfig, CancellationToken cancellationToken,
                       Action <WriteTransaction, string, ulong?> updateClock)
 {
     _lmdb              = lmdb;
     _targetReplicaId   = targetReplicaId;
     _kvTable           = kvTable;
     _replicationTable  = replicationTable;
     _replicationConfig = replicationConfig;
     _cancellationToken = cancellationToken;
     _updateClock       = updateClock;
 }
Exemple #5
0
 public ReplicatorSlave(LightningPersistence lmdb, string ownReplicaId,
                        KvTable kvTable, ReplicationTable replicationTable, WriteLogTable wlTable,
                        ReplicationConfig replicationConfig, Action <WriteTransaction, string, ulong?> updateClock) // TODO: Add ACKs streaming
 {
     _lmdb               = lmdb;
     _ownReplicaId       = ownReplicaId;
     _kvTable            = kvTable;
     _replicationTable   = replicationTable;
     _wlTable            = wlTable;
     _replicationConfig  = replicationConfig;
     _updateClock        = updateClock;
     _replicationSources = new ConcurrentDictionary <string, ReplicatorSource>();
     _cts = new CancellationTokenSource();
 }
Exemple #6
0
 public KvTable(LightningPersistence lmdb, string kvTableName, string replicaId,
                ReplicaStatusTable statusTable, ExpiryTable expiryTable, KvMetadataTable metadataTable, WriteLogTable wlTable,
                Func <VectorClock> currentClock, Func <WriteTransaction, VectorClock> incrementClock, Func <Item[], Task> updateNotifier)
 {
     _lmdb           = lmdb;
     _replicaId      = replicaId;
     StatusTable     = statusTable;
     _kvTable        = _lmdb.OpenTable(kvTableName);
     _expiryTable    = expiryTable;
     _metadataTable  = metadataTable;
     _wlTable        = wlTable;
     _currentClock   = currentClock;
     _incrementClock = incrementClock;
     _updateNotifier = updateNotifier;
 }
Exemple #7
0
        public ReplicationTable(LightningPersistence lmdb, string tableName)
        {
            _lmdb = lmdb;
//            _replicaId = replicaId;
            _table = _lmdb.OpenTable(tableName);
        }
Exemple #8
0
 public WriteLogTable(LightningPersistence lmdb, string tableName, string replicaId)
 {
     _lmdb      = lmdb;
     _replicaId = replicaId;
     _table     = _lmdb.OpenTable(tableName);
 }
Exemple #9
0
 public static Task <(TableKey, bool)[]> AddBatch(this LightningPersistence lmdb, Table table, (TableKey, TableValue)[] batch, bool requiresIsolation = false) =>
Exemple #10
0
 public static Task <bool> AddOrUpdate(this LightningPersistence lmdb, Table table, TableKey key, TableValue value, bool requiresIsolation = false) =>
 lmdb.WriteAsync(txn => txn.AddOrUpdate(table, key, value), requiresIsolation);
Exemple #11
0
 public static TableKey[] KeysByPrefix(this LightningPersistence lmdb, Table table, TableKey prefix, uint page, uint pageSize) =>
 lmdb.Read(txn => txn.KeysByPrefix(table, prefix, page, pageSize).ToArray());
Exemple #12
0
 public static bool ContainsKey(this LightningPersistence lmdb, Table table, TableKey key) => lmdb.Read(txn => txn.ContainsKey(table, key));
Exemple #13
0
 public KvMetadataTable(LightningPersistence lmdb, string tableName)
 {
     _lmdb  = lmdb;
     _table = _lmdb.OpenTable(tableName);
 }
Exemple #14
0
 public LmdbLightClient(LightningConfig config)
 {
     _lmdb    = new LightningPersistence(config);
     _kvTable = _lmdb.OpenTable("kv");
 }
Exemple #15
0
 public ExpiryTable(LightningPersistence lmdb, string tableName)
 {
     _lmdb  = lmdb;
     _table = _lmdb.OpenDupTable(tableName);
 }
Exemple #16
0
        public void TestCreateDb()
        {
            using (var persistence = new LightningPersistence(_config)) { }

            Assert.Pass();
        }