forked from bulldog2011/bigqueue
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIBigQueue.java
More file actions
79 lines (69 loc) · 2.26 KB
/
Copy pathIBigQueue.java
File metadata and controls
79 lines (69 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.leansoft.bigqueue;
import java.io.Closeable;
import java.io.IOException;
/**
* Queue ADT
*
* @author bulldog
*
*/
public interface IBigQueue extends Closeable {
/**
* Determines whether a queue is empty
*
* @return ture if empty, false otherwise
*/
public boolean isEmpty();
/**
* Adds an item at the back of a queue
*
* @param data to be enqueued data
* @throws IOException exception throws if there is any IO error during enqueue operation.
*/
public void enqueue(byte[] data) throws IOException;
/**
* Retrieves and removes the front of a queue
*
* @return data at the front of a queue
* @throws IOException exception throws if there is any IO error during dequeue operation.
*/
public byte[] dequeue() throws IOException;
/**
* Removes all items of a queue, this will empty the queue and delete all back data files.
*
* @throws IOException exception throws if there is any IO error during dequeue operation.
*/
public void removeAll() throws IOException;
/**
* Retrieves the item at the front of a queue
*
* @return data at the front of a queue
* @throws IOException exception throws if there is any IO error during peek operation.
*/
public byte[] peek() throws IOException;
/**
* Delete all used data files to free disk space.
*
* BigQueue will persist enqueued data in disk files, these data files will remain even after
* the data in them has been dequeued later, so your application is responsible to periodically call
* this method to delete all used data files and free disk space.
*
* @throws IOException exception throws if there is any IO error during gc operation.
*/
public void gc() throws IOException;
/**
* Force to persist current state of the queue,
*
* normally, you don't need to flush explicitly since:
* 1.) BigQueue will automatically flush a cached page when it is replaced out,
* 2.) BigQueue uses memory mapped file technology internally, and the OS will flush the changes even your process crashes,
*
* call this periodically only if you need transactional reliability and you are aware of the cost to performance.
*/
public void flush();
/**
* Total number of items available in the queue.
* @return total number
*/
public long size();
}