/// <summary> /// Writes the log into the buffer. /// </summary> /// <param name="log">The log to be saved.</param> public static void Write(Log log) { if (Collection == null) { new TraceStateException("No connection has been created."); } Semaphore.WaitOne(); LogBuffer freeBuffer = null; lock (critSec) { //TODO //Find a way to do this quicker freeBuffer = Buffers.FirstOrDefault(b => !b.InUse && !b.Full); if (freeBuffer == null) { Flush(); //After the flush, every buffer is free. So take the first freeBuffer = Buffers[0]; } else { freeBuffer.InUse = true; } } freeBuffer.Add(log); freeBuffer.InUse = false; Semaphore.Release(); }
public static void Write(Log log) { //if (client == null || client.Cluster.Description.State == ClusterState.Disconnected) // throw new TraceStateException("No connection to local db."); LogBuffer freeBuffer = Arbiter.Wait(); freeBuffer.Add(log); Arbiter.Release(freeBuffer); }
public static void Write(Log log) { if (client == null) { throw new TraceStateException("No connection to local db."); } LogBuffer freeBuffer = Arbiter.Wait(); freeBuffer.Add(log); Arbiter.Release(freeBuffer); }