private static byte[][] PopulateMultipleCursorValues(LightningCursor cursor, string key = "TestKey") { var values = Enumerable.Range(1, 5).Select(BitConverter.GetBytes).ToArray(); var result = cursor.Put(UTF8.GetBytes(key), values); Assert.Equal(MDBResultCode.Success, result); var notDuplicate = values[0]; result = cursor.Put(notDuplicate, notDuplicate, CursorPutOptions.NoDuplicateData); Assert.Equal(MDBResultCode.Success, result); return(values); }
public void CloseCursor(LightningCursor cursor) { try { CloseCursor(cursor._handle); } finally { bool value; _cursors.TryRemove(cursor._handle, out value); } }
private static byte[][] PopulateCursorValues(LightningCursor cursor, int count = 5, string keyPrefix = "key") { var keys = Enumerable.Range(1, count) .Select(i => UTF8.GetBytes(keyPrefix + i)) .ToArray(); foreach (var k in keys) { var result = cursor.Put(k, k, CursorPutOptions.None); Assert.Equal(MDBResultCode.Success, result); } return(keys); }
public IDataReader <TKey, TValue> GetAllDocuments <TKey, TValue>(string collection) { if (string.IsNullOrEmpty(collection)) { throw new ArgumentException("Collection name can not be null or empty."); } if (!CollectionExists(collection)) { throw new ArgumentException("Specified collection not found in " + GetFileInfo() + " Collection = " + collection); } ReadTransaction transaction = null; try { if (_readerTransaction != null) { if (_readerTransaction.ShouldRenew) { _readerTransaction.WaitUntillFree(); } } lock (_readerTransactionLock) { if (_readerTransaction == null || !_readerTransaction.Running) { _readerTransaction = new ReadTransaction(BeginTransaction(null, true)); } transaction = _readerTransaction; transaction.Enter(); } ValidateTransaction(transaction.Transaction); LightningTransaction lmdbTransaction = (LightningTransaction)transaction.Transaction.InnerObject; LightningCursor cursor = lmdbTransaction.CreateCursor(_collectionTable[collection].Collection); LMDBDataReader <TKey, TValue> reader = new LMDBDataReader <TKey, TValue>(cursor.GetEnumerator(), _environment, _collectionTable[collection].Collection); return(reader); } finally { if (transaction != null) { transaction.Exit(); } } }
private static long ReadInternal(IEnumerable <uint> ids, PerfTracker perfTracker, LightningEnvironment env, LightningDatabase db) { using (var tx = env.BeginTransaction(LightningDB.TransactionBeginFlags.ReadOnly)) using (var cursor = new LightningCursor(db, tx)) { long v = 0; foreach (var id in ids) { var value = cursor.MoveTo(Encoding.UTF8.GetBytes(id.ToString("0000000000000000"))); v += value.Value.Length; //Debug.Assert(value != null); } return(v); } }
public static void PrintAllVulnerabilities() { if (!Environment.IsOpened) { Environment.MapSize = 2L * 1024L * 1024L * 1024L; Environment.Open(EnvironmentOpenFlags.None); } using (LightningTransaction tx = Environment.BeginTransaction(TransactionBeginFlags.ReadOnly)) { LightningDatabase db = tx.OpenDatabase(); using (LightningCursor cursor = tx.CreateCursor(db)) { foreach (KeyValuePair <byte[], byte[]> r in cursor) { string id = Encoding.UTF8.GetString(r.Key); OSSIndexVulnerability v = JsonConvert.DeserializeObject <OSSIndexVulnerability>(Encoding.UTF8.GetString(r.Value)); logger.Info("Id: {0}), Package: {1}, CVEs: {2}", id, v.Name, string.Join(" ", v.CVEs)); } } } }
public CursorEnumerator(LightningCursor cur) { _cur = cur; }
public CursorGenericEnumerator(LightningCursor cur) { _enumerator = new CursorEnumerator(cur); }