
io.jsync.streams.DrainSupport Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jsync.io Show documentation
Show all versions of jsync.io Show documentation
jsync.io is a non-blocking, event-driven networking framework for Java
/*
* Copyright (c) 2011-2013 The original author or authors
* ------------------------------------------------------
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.jsync.streams;
import io.jsync.Handler;
/**
* Allows to set a {@link Handler} which is notified once the write queue is drained again.
* This way you can stop writing once the write queue consumes to much memory and so prevent
* an OutOfMemoryError.
*
* @author Norman Maurer
*/
public interface DrainSupport {
/**
* Set the maximum size of the write queue to {@code maxSize}. You will still be able to write to the stream even
* if there is more than {@code maxSize} bytes in the write queue. This is used as an indicator by classes such as
* {@code Pump} to provide flow control.
*/
T setWriteQueueMaxSize(int maxSize);
/**
* This will return {@code true} if there are more bytes in the write queue than the value set using {@link
* #setWriteQueueMaxSize}
*/
boolean writeQueueFull();
/**
* Set a drain handler on the stream. If the write queue is full, then the handler will be called when the write
* queue has been reduced to maxSize / 2. See {@link Pump} for an example of this being used.
*/
T drainHandler(Handler handler);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy