public void Dispose() { try { _env._tempPagesPool.Enqueue(_tmp); } catch (Exception) { _tmp.Dispose(); throw; } }
public unsafe void Dispose() { try { if (_env.Options.EncryptionEnabled) { Sodium.ZeroMemory(_tmp.TempPagePointer, _tmp.PageSize); } _env._tempPagesPool.Enqueue(_tmp); } catch (Exception) { _tmp.Dispose(); throw; } }
public IDisposable GetTemporaryPage(Transaction tx, out TemporaryPage tmp) { if (tx.Flags != TransactionFlags.ReadWrite) { throw new ArgumentException("Temporary pages are only available for write transactions"); } if (_tempPagesPool.Count > 0) { tmp = _tempPagesPool.Dequeue(); return(tmp.ReturnTemporaryPageToPool); } tmp = new TemporaryPage(); try { return(tmp.ReturnTemporaryPageToPool = new ReturnTemporaryPageToPool(this, tmp)); } catch (Exception) { tmp.Dispose(); throw; } }