1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package org.apache.hadoop.chukwa.datacollection; 20 21 22 import java.util.List; 23 import org.apache.hadoop.chukwa.Chunk; 24 25 /** 26 * A generic interface for queues of Chunks. 27 * 28 * Differs from a normal queue interface primarily by having collect(). 29 */ 30 public interface ChunkQueue extends ChunkReceiver { 31 /** 32 * Add a chunk to the queue, blocking if queue is full. 33 * 34 * @param chunk 35 * @throws InterruptedException if thread is interrupted while blocking 36 */ 37 public void add(Chunk chunk) throws InterruptedException; 38 39 /** 40 * Return at least one, and no more than count, Chunks into chunks. Blocks if 41 * queue is empty. 42 */ 43 public void collect(List<Chunk> chunks, int count) 44 throws InterruptedException; 45 46 /** 47 * Return an approximation of the number of chunks in the queue currently. No 48 * guarantees are made about the accuracy of this number. 49 */ 50 public int size(); 51 }