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

org.teamapps.uisession.ClientBackPressureInfo Maven / Gradle / Ivy

There is a newer version: 0.9.194
Show newest version
/*-
 * ========================LICENSE_START=================================
 * TeamApps
 * ---
 * Copyright (C) 2014 - 2024 TeamApps.org
 * ---
 * 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.
 * =========================LICENSE_END==================================
 */
package org.teamapps.uisession;

public class ClientBackPressureInfo {

	private final int maxCommandBufferSize;
	private final int bufferedCommandsCount;
	private final int unconsumedCommandsCount;

	private final int minRequestedCommands;
	private final int maxRequestedCommands;
	private final int remainingRequestedCommands;

	private final long requestedCommandsZeroReachingTimestamp;

	public ClientBackPressureInfo(int maxCommandBufferSize, int bufferedCommandsCount, int unconsumedCommandsCount,
								  int minRequestedCommands, int maxRequestedCommands, int remainingRequestedCommands,
								  long requestedCommandsZeroReachingTimestamp) {
		this.maxCommandBufferSize = maxCommandBufferSize;
		this.bufferedCommandsCount = bufferedCommandsCount;
		this.unconsumedCommandsCount = unconsumedCommandsCount;
		this.minRequestedCommands = minRequestedCommands;
		this.maxRequestedCommands = maxRequestedCommands;
		this.remainingRequestedCommands = remainingRequestedCommands;
		this.requestedCommandsZeroReachingTimestamp = requestedCommandsZeroReachingTimestamp;
	}

	public boolean isBusy() {
		boolean clientNotRequestingMoreCommands = requestedCommandsZeroReachingTimestamp > 0 && requestedCommandsZeroReachingTimestamp < System.currentTimeMillis() - 500;
		boolean commandBufferCriticallyFull = unconsumedCommandsCount > 500;
		return clientNotRequestingMoreCommands || commandBufferCriticallyFull;
	}

	public int getMaxCommandBufferSize() {
		return maxCommandBufferSize;
	}

	public int getBufferedCommandsCount() {
		return bufferedCommandsCount;
	}

	public int getUnconsumedCommandsCount() {
		return unconsumedCommandsCount;
	}

	public int getMinRequestedCommands() {
		return minRequestedCommands;
	}

	public int getMaxRequestedCommands() {
		return maxRequestedCommands;
	}

	public int getRemainingRequestedCommands() {
		return remainingRequestedCommands;
	}

	public long getRequestedCommandsZeroReachingTimestamp() {
		return requestedCommandsZeroReachingTimestamp;
	}

	@Override
	public String toString() {
		return "ClientBackPressureInfo{" +
				"maxCommandBufferSize=" + maxCommandBufferSize +
				", commandBufferFillSize=" + unconsumedCommandsCount +
				", minRequestedCommands=" + minRequestedCommands +
				", maxRequestedCommands=" + maxRequestedCommands +
				", remainingRequestedCommands=" + remainingRequestedCommands +
				", requestedCommandsBelowMinTimestamp=" + requestedCommandsZeroReachingTimestamp +
				", timeSinceLastCommandRequestAfterZero=" + (System.currentTimeMillis() - requestedCommandsZeroReachingTimestamp) +
				'}';
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy