public virtual void Release(ShutdownMode mode, Transaction transaction, bool rollbackOnClose ) { lock (_mainContainer.Lock()) { ClientTransactionPool.ContainerCount entry = (ClientTransactionPool.ContainerCount )_transaction2Container.Get(transaction); entry.Container().CloseTransaction(transaction, false, mode.IsFatal() ? false : rollbackOnClose ); _transaction2Container.Remove(transaction); entry.Release(); if (entry.IsEmpty()) { _fileName2Container.Remove(entry.FileName()); try { entry.Close(mode); } catch (Exception t) { // If we are in fatal ShutdownMode close will // throw but we want to continue shutting down // all entries. Sharpen.Runtime.PrintStackTrace(t); } } } }
public virtual void Close(ShutdownMode mode) { lock (_mainContainer.Lock()) { IEnumerator entryIter = _fileName2Container.Iterator(); while (entryIter.MoveNext()) { IEntry4 hashEntry = (IEntry4)entryIter.Current; ClientTransactionPool.ContainerCount containerCount = (ClientTransactionPool.ContainerCount )hashEntry.Value(); try { containerCount.Close(mode); } catch (Exception t) { // If we are in fatal ShutdownMode close will // throw but we want to continue shutting down // all entries. Sharpen.Runtime.PrintStackTrace(t); } } _closed = true; } }
public ClientTransactionPool(LocalObjectContainer mainContainer) { // Transaction -> ContainerCount // String -> ContainerCount ClientTransactionPool.ContainerCount mainEntry = new ClientTransactionPool.ContainerCount (mainContainer, 1); _transaction2Container = new Hashtable4(); _fileName2Container = new Hashtable4(); _fileName2Container.Put(mainContainer.FileName(), mainEntry); _mainContainer = mainContainer; }
public override bool Equals(object obj) { if (this == obj) { return(true); } if (obj == null || GetType() != obj.GetType()) { return(false); } ClientTransactionPool.ContainerCount other = (ClientTransactionPool.ContainerCount )obj; return(FileName().Equals(other.FileName())); }
public virtual Transaction Acquire(string fileName) { lock (_mainContainer.Lock()) { ClientTransactionPool.ContainerCount entry = (ClientTransactionPool.ContainerCount )_fileName2Container.Get(fileName); if (entry == null) { LocalObjectContainer container = (LocalObjectContainer)Db4oEmbedded.OpenFile(Db4oEmbedded .NewConfiguration(), fileName); container.ConfigImpl.SetMessageRecipient(_mainContainer.ConfigImpl.MessageRecipient ()); entry = new ClientTransactionPool.ContainerCount(container); _fileName2Container.Put(fileName, entry); } Transaction transaction = entry.NewTransaction(); ObjectContainerSession objectContainerSession = new ObjectContainerSession(entry. Container(), transaction); transaction.SetOutSideRepresentation(objectContainerSession); _transaction2Container.Put(transaction, entry); return(transaction); } }
public virtual Transaction Acquire(string fileName) { lock (_mainContainer.Lock()) { ClientTransactionPool.ContainerCount entry = (ClientTransactionPool.ContainerCount )_fileName2Container.Get(fileName); if (entry == null) { LocalObjectContainer container = (LocalObjectContainer)Db4oEmbedded.OpenFile(Db4oEmbedded .NewConfiguration(), fileName); container.ConfigImpl.SetMessageRecipient(_mainContainer.ConfigImpl.MessageRecipient ()); entry = new ClientTransactionPool.ContainerCount(container); _fileName2Container.Put(fileName, entry); } Transaction transaction = entry.NewTransaction(); ObjectContainerSession objectContainerSession = new ObjectContainerSession(entry. Container(), transaction); transaction.SetOutSideRepresentation(objectContainerSession); _transaction2Container.Put(transaction, entry); return transaction; } }