/// <summary> /// Markiert einen Speicherbereich zum Löschen. Löscht Sie allerdings nicht!!! Dazu muss Flush() aufgerufen werden /// </summary> /// <param name="pFrom">From Position</param> /// <param name="pTo">To Position</param> /// <returns> /// <list type="bullet"> /// <item>0 bei bei fehlerfreier Abarbeitung (<see cref="EDOLLHandler">EDOLL-Code</see>)</item> /// <item>-207 wenn pFrom größer als pTo (<see cref="EDOLLHandler">EDOLL-Code</see>)</item> /// <item>-208 wenn pTo über den beschriebenen Speicher hinauszeigt (<see cref="EDOLLHandler">EDOLL-Code</see>)</item> /// </list> /// </returns> /// <example> /// Beispieloperationen mit dem Buffer /// <para><img src="tbl_img/receiveBufferExample.jpg" /></para> /// <code> /// public static void receiveBufferExample() /// { /// receiveBuffer testBuffer = new receiveBuffer(); /// /// testBuffer.AddByte((byte)'a'); /// testBuffer.AddByte((byte)'b'); /// testBuffer.AddByte((byte)'c'); /// /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // printet 3 /// stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an /// /// testBuffer.FreeBytes(0,1); // markiert 'a' und 'b' zum Löschen /// /// stdOut.Info("a und b marked for erasing"); /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // liefert 3, wurde ja erst markiert /// /// testBuffer.Flush(); /// /// stdOut.Info("buffer flushed..."); /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // liefert 1, 'c' wurde ganz nach vorne gerutscht /// stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an /// /// testBuffer.Clear(); // Buffer wieder ausleeren /// /// stdOut.Info("buffer cleared"); /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // liefert 0 /// } /// </code> /// </example> public int FreeBytes(int pFrom, int pTo) { // Syntaxprüfung if (pFrom > pTo) { return(-207); } if (pTo >= dptr) { return(-208); } accessControl.WaitOne(); fromToPair tmp = new fromToPair(); tmp.From = pFrom; tmp.To = pTo; toDelete.Add(tmp); accessControl.Release(); return(0); }
/// <summary> /// Markiert einen Speicherbereich zum Löschen. Löscht Sie allerdings nicht!!! Dazu muss Flush() aufgerufen werden /// </summary> /// <param name="pFrom">From Position</param> /// <param name="pTo">To Position</param> /// <returns> /// <list type="bullet"> /// <item>0 bei bei fehlerfreier Abarbeitung (<see cref="EDOLLHandler">EDOLL-Code</see>)</item> /// <item>-207 wenn pFrom größer als pTo (<see cref="EDOLLHandler">EDOLL-Code</see>)</item> /// <item>-208 wenn pTo über den beschriebenen Speicher hinauszeigt (<see cref="EDOLLHandler">EDOLL-Code</see>)</item> /// </list> /// </returns> /// <example> /// Beispieloperationen mit dem Buffer /// <para><img src="tbl_img/receiveBufferExample.jpg" /></para> /// <code> /// public static void receiveBufferExample() /// { /// receiveBuffer testBuffer = new receiveBuffer(); /// /// testBuffer.AddByte((byte)'a'); /// testBuffer.AddByte((byte)'b'); /// testBuffer.AddByte((byte)'c'); /// /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // printet 3 /// stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an /// /// testBuffer.FreeBytes(0,1); // markiert 'a' und 'b' zum Löschen /// /// stdOut.Info("a und b marked for erasing"); /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // liefert 3, wurde ja erst markiert /// /// testBuffer.Flush(); /// /// stdOut.Info("buffer flushed..."); /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // liefert 1, 'c' wurde ganz nach vorne gerutscht /// stdOut.Debug("Buffer content: " + testBuffer.ToString());// Zeigt Hexwerte im Buffer an /// /// testBuffer.Clear(); // Buffer wieder ausleeren /// /// stdOut.Info("buffer cleared"); /// stdOut.Debug("Dataptr now: " + testBuffer.DataPtr.ToString()); // liefert 0 /// } /// </code> /// </example> public int FreeBytes(int pFrom, int pTo) { // Syntaxprüfung if(pFrom > pTo) { return(-207); } if(pTo >= dptr) { return(-208); } accessControl.WaitOne(); fromToPair tmp = new fromToPair(); tmp.From = pFrom; tmp.To = pTo; toDelete.Add(tmp); accessControl.Release(); return(0); }