Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
Source Code for Apache Log4j 1.2.17
Apache Log4j
provides the interface that applications should code to and provides the adapter
components required for implementers to create a logging implementation.
Bytecode (Java 1.4) for Apache Log4j is provided in a JAR file like log4j-1.2.17.jar.
Source Code files for Apache Log4j are provided in both binary packge like log4j-1.2.17.zip and source package like log4j-1.2.17-sources.zip. You can download them at Apache Log4j Website.
You can also browse Source Code files for Apache Log4j 1.2.17 below.
✍: FYIcenter.com
⏎ org/apache/log4j/helpers/BoundedFIFO.java
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // Contributors: Mathias Bogaert // joelr@viair.com package org.apache.log4j.helpers; import org.apache.log4j.spi.LoggingEvent; /** <code>BoundedFIFO</code> serves as the bounded first-in-first-out buffer heavily used by the {@link org.apache.log4j.AsyncAppender}. @author Ceki Gülcü @since version 0.9.1 */ public class BoundedFIFO { LoggingEvent[] buf; int numElements = 0; int first = 0; int next = 0; int maxSize; /** Instantiate a new BoundedFIFO with a maximum size passed as argument. */ public BoundedFIFO(int maxSize) { if(maxSize < 1) { throw new IllegalArgumentException("The maxSize argument ("+maxSize+ ") is not a positive integer."); } this.maxSize = maxSize; buf = new LoggingEvent[maxSize]; } /** Get the first element in the buffer. Returns <code>null</code> if there are no elements in the buffer. */ public LoggingEvent get() { if(numElements == 0) return null; LoggingEvent r = buf[first]; buf[first] = null; // help garbage collection if(++first == maxSize) { first = 0; } numElements--; return r; } /** Place a {@link LoggingEvent} in the buffer. If the buffer is full then the event is <b>silently dropped</b>. It is the caller's responsability to make sure that the buffer has free space. */ public void put(LoggingEvent o) { if(numElements != maxSize) { buf[next] = o; if(++next == maxSize) { next = 0; } numElements++; } } /** Get the maximum size of the buffer. */ public int getMaxSize() { return maxSize; } /** Return <code>true</code> if the buffer is full, that is, whether the number of elements in the buffer equals the buffer size. */ public boolean isFull() { return numElements == maxSize; } /** Get the number of elements in the buffer. This number is guaranteed to be in the range 0 to <code>maxSize</code> (inclusive). */ public int length() { return numElements; } int min(int a, int b) { return a < b ? a : b; } /** Resize the buffer to a new size. If the new size is smaller than the old size events might be lost. @since 1.1 */ synchronized public void resize(int newSize) { if(newSize == maxSize) return; LoggingEvent[] tmp = new LoggingEvent[newSize]; // we should not copy beyond the buf array int len1 = maxSize - first; // we should not copy beyond the tmp array len1 = min(len1, newSize); // er.. how much do we actually need to copy? // We should not copy more than the actual number of elements. len1 = min(len1, numElements); // Copy from buf starting a first, to tmp, starting at position 0, len1 elements. System.arraycopy(buf, first, tmp, 0, len1); // Are there any uncopied elements and is there still space in the new array? int len2 = 0; if((len1 < numElements) && (len1 < newSize)) { len2 = numElements - len1; len2 = min(len2, newSize - len1); System.arraycopy(buf, 0, tmp, len1, len2); } this.buf = tmp; this.maxSize = newSize; this.first=0; this.numElements = len1+len2; this.next = this.numElements; if(this.next == this.maxSize) // this should never happen, but again, it just might. this.next = 0; } /** Returns <code>true</code> if there is just one element in the buffer. In other words, if there were no elements before the last {@link #put} operation completed. */ public boolean wasEmpty() { return numElements == 1; } /** Returns <code>true</code> if the number of elements in the buffer plus 1 equals the maximum buffer size, returns <code>false</code> otherwise. */ public boolean wasFull() { return (numElements+1 == maxSize); } }
⏎ org/apache/log4j/helpers/BoundedFIFO.java
Or download all of them as a single archive file:
File name: log4j-1.2.17-sources.jar File size: 481200 bytes Release date: 2012-05-06 Download
⇒ Download and Install apache-log4j-1.2.15.zip
⇐ Download and Install log4j-1.2.17.zip
2015-12-14, 51061👍, 0💬
Popular Posts:
Apache Log4j IOStreams is a Log4j API extension that provides numerous classes from java.io that can...
What Is javax.websocket-api-1.1. jar?javax.websocket-api-1.1. jaris the JAR file for Java API for We...
Apache Log4j IOStreams is a Log4j API extension that provides numerous classes from java.io that can...
What Is HttpComponents httpcore-4.4.6.jar? HttpComponents httpcore-4.4.6.jar is the JAR file for Apa...
What Is commons-net-ftp-2.0.jar? commons-net-ftp-2.0.jar is the JAR file for Apache Commons Net FTP ...