aboutsummaryrefslogtreecommitdiff
path: root/java/common/src/com/google/airbag/common/ReportQueue.java
blob: c92f385e3080c40a84f9fadb8a1093f7cfc2c861 (plain)
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
/* Copyright (C) 2006 Google Inc.

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 com.google.airbag.common;

import java.util.LinkedList;

/**
 * A queue interface for unprocessed report ids. The interface is intended
 * for inter-process usage. A report uploading server enqueues new report
 * ids, and a processor dequeues ids. 
 * 
 * The interface is much simpler than <b>java.util.Queue</b>. An implementation
 * should provide a persistent storage of queued ids even when a process 
 * is killed.
 */

public interface ReportQueue {
  /**
   * Enqueue a record id.
   * 
   * @param rid
   * @return true if success
   */
  public boolean enqueue(String rid);
  
  /**
   * Enqueue a list of ids
   * 
   * @param ids
   * @return true if success
   */
  public boolean enqueue(LinkedList<String> ids);
  
  /**
   * Checks if a queue is empty
   * @return true if the queue is empty
   */
  public boolean empty();
  
  /**
   * Removes several ids from the queue. An implementation decides how 
   * many ids to be removed.
   * 
   * @return a list of queue
   */
  public LinkedList<String> dequeue();
}