Exemple #1
0
 public void PerformWork(Work work, ISessionImplementor session)
 {
     if (session.TransactionInProgress)
     {
         ITransaction transaction = ((ISession)session).Transaction;
         PostTransactionWorkQueueSynchronization txSync = (PostTransactionWorkQueueSynchronization)
                                                          synchronizationPerTransaction[transaction];
         if (txSync == null || txSync.IsConsumed)
         {
             txSync =
                 new PostTransactionWorkQueueSynchronization(queueingProcessor, synchronizationPerTransaction);
             transaction.RegisterSynchronization(txSync);
             lock (synchronizationPerTransaction.SyncRoot)
                 synchronizationPerTransaction[transaction] = txSync;
         }
         txSync.Add(work);
     }
     else
     {
         WorkQueue queue = new WorkQueue(2); //one work can be split
         queueingProcessor.Add(work, queue);
         queueingProcessor.PrepareWorks(queue);
         queueingProcessor.PerformWorks(queue);
     }
 }
Exemple #2
0
 public void BeforeCompletion()
 {
     queueingProcessor.PrepareWorks(queue);
 }