All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.datakernel.http.AddressLinkedList Maven / Gradle / Ivy

Go to download

High-performance asynchronous HTTP clients and servers collection. Package contains a bunch of different built-in servlets for request dispatching, loading of a static content, etc.

There is a newer version: 3.1.0
Show newest version
/*
 * Copyright (C) 2015 SoftIndex LLC.
 *
 * Licensed 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.
 */

package io.datakernel.http;

final class AddressLinkedList {
	private HttpClientConnection first;
	private HttpClientConnection last;

	public boolean isEmpty() {
		return first == null;
	}

	public HttpClientConnection removeLastNode() {
		if (last == null)
			return null;
		HttpClientConnection node = last;
		last = node.addressPrev;
		if (node.addressPrev != null) {
			node.addressPrev.addressNext = node.addressNext;
		} else {
			assert first == node;
			first = node.addressNext;
		}
		node.addressNext = node.addressPrev = null;
		return node;
	}

	public void addLastNode(HttpClientConnection node) {
		assert node.addressPrev == null && node.addressNext == null;
		if (last != null) {
			assert last.addressNext == null;
			last.addressNext = node;
			node.addressPrev = last;
		} else {
			assert first == null;
			first = node;
		}
		last = node;
	}

	public void removeNode(HttpClientConnection node) {
		if (node.addressPrev != null) {
			node.addressPrev.addressNext = node.addressNext;
		} else {
			assert first == node;
			first = node.addressNext;
		}
		if (node.addressNext != null) {
			node.addressNext.addressPrev = node.addressPrev;
		} else {
			assert last == node;
			last = node.addressPrev;
		}
		node.addressNext = node.addressPrev = null;
	}

	public int size() {
		int count = 0;
		for (HttpClientConnection connection = first; connection != null; connection = connection.addressNext) {
			count++;
		}
		return count;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy