[Quantproject-developers] QuantDownloader/Downloader/OpenTickDownloader BarQueue.cs, 1.1, 1.2
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2009-02-04 19:51:22
|
Update of /cvsroot/quantproject/QuantDownloader/Downloader/OpenTickDownloader In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31733 Modified Files: BarQueue.cs Log Message: The class has been changed to be thread safe by itself (it was caller's responsability in the previous revision) Index: BarQueue.cs =================================================================== RCS file: /cvsroot/quantproject/QuantDownloader/Downloader/OpenTickDownloader/BarQueue.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** BarQueue.cs 9 Jul 2008 22:07:33 -0000 1.1 --- BarQueue.cs 4 Feb 2009 19:51:18 -0000 1.2 *************** *** 3,7 **** BarQueue.cs ! Copyright (C) 2008 Glauco Siliprandi --- 3,7 ---- BarQueue.cs ! Copyright (C) 2008 Glauco Siliprandi *************** *** 19,23 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; --- 19,23 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; *************** *** 29,33 **** public delegate void NewChunkOfBarsToBeWrittenWithASingleSqlCommandEventHandler(); ! /// <summary> /// Keeps a queue of bars, rises events when needed. --- 29,33 ---- public delegate void NewChunkOfBarsToBeWrittenWithASingleSqlCommandEventHandler(); ! /// <summary> /// Keeps a queue of bars, rises events when needed. *************** *** 37,41 **** public event NewChunkOfBarsToBeWrittenWithASingleSqlCommandEventHandler NewChunkOfBarsToBeWrittenWithASingleSqlCommand; ! // private Queue<Bar> barQueue; private int numberOfBarsToBeWrittenWithASingleSqlCommand; --- 37,41 ---- public event NewChunkOfBarsToBeWrittenWithASingleSqlCommandEventHandler NewChunkOfBarsToBeWrittenWithASingleSqlCommand; ! // private Queue<Bar> barQueue; private int numberOfBarsToBeWrittenWithASingleSqlCommand; *************** *** 44,50 **** private Queue<Bar> queue; ! public Queue<Bar> Queue { ! get { return this.queue; } } --- 44,63 ---- private Queue<Bar> queue; ! // public Queue<Bar> Queue ! // { ! // get { return this.queue; } ! // } ! ! public int Count { ! get ! { ! int count; ! lock ( ((System.Collections.ICollection)(this.queue)).SyncRoot ) ! { ! count = this.queue.Count; ! } ! return count; ! } } *************** *** 61,64 **** --- 74,87 ---- #region Enqueue + + private void enqueueThreadSafely( Bar bar ) + { + lock ( ((System.Collections.ICollection)(this.queue)).SyncRoot ) + { + this.queue.Enqueue( bar ); + } + } + + #region enqueue_handleChunkOfBarsToBeWrittenToDatabase private void riseNewChunkOfBarsToBeWrittenWithASingleSqlCommand() { *************** *** 74,83 **** this.riseNewChunkOfBarsToBeWrittenWithASingleSqlCommand(); } public void Enqueue( Bar bar ) { ! this.Queue.Enqueue( bar ); this.enqueue_handleChunkOfBarsToBeWrittenToDatabase(); } #endregion Enqueue } } --- 97,122 ---- this.riseNewChunkOfBarsToBeWrittenWithASingleSqlCommand(); } + #endregion enqueue_handleChunkOfBarsToBeWrittenToDatabase + public void Enqueue( Bar bar ) { ! this.enqueueThreadSafely( bar ); this.enqueue_handleChunkOfBarsToBeWrittenToDatabase(); } #endregion Enqueue + + /// <summary> + /// thread safe bar dequeue + /// </summary> + /// <returns></returns> + public Bar Dequeue() + { + Bar bar; + lock ( ((System.Collections.ICollection)(this.queue)).SyncRoot ) + { + bar = this.queue.Dequeue(); + } + return bar; + } } } |