Exemplo n.º 1
0
        /// <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);
        }