View Javadoc
1   package com.github.davidmoten.rx.internal.operators;
2   
3   /**
4    * <p>
5    * A queue with associated underlying resources that can be freed, or closed
6    * (via {@code unsubscribe}).
7    * 
8    * <p>
9    * An example of freeing resources would be to close all open file system
10   * resources (like file descriptor handles) associated with the queue and reopen
11   * them on next poll/offer that needs to access the file system. This would
12   * avoid running out of file descriptors in some situations.
13   *
14   * @param <T>
15   *            type of item on queue
16   */
17  interface QueueWithResources<T> extends QueueWithSubscription<T> {
18  
19  	/**
20  	 * <p>
21  	 * Frees resources associated with this queue. This is not for closing a
22  	 * queue but rather in the situation where the queue is not used for a
23  	 * period of time then it may be desirable to reduce its resource usage
24  	 * (without compromising its content).
25  	 * 
26  	 * <p>
27  	 * An example of freeing resources would be to close all open file system
28  	 * resources (like file descriptor handles) associated with the queue and
29  	 * reopen them on next poll/offer that needs to access the file system. This
30  	 * would avoid running out of file descriptors in some situations.
31  	 */
32  	void freeResources();
33  
34  	long resourcesSize();
35  }