View Javadoc

1   /*
2    *
3    * Licensed to the Apache Software Foundation (ASF) under one
4    * or more contributor license agreements.  See the NOTICE file
5    * distributed with this work for additional information
6    * regarding copyright ownership.  The ASF licenses this file
7    * to you under the Apache License, Version 2.0 (the
8    * "License"); you may not use this file except in compliance
9    * with the License.  You may obtain a copy of the License at
10   *
11   *     http://www.apache.org/licenses/LICENSE-2.0
12   *
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   */
19  
20  package org.apache.hadoop.hbase.namequeues;
21  
22  import org.apache.hadoop.hbase.classification.InterfaceAudience;
23  
24  
25  /**
26   * An envelope to carry payload in the ring buffer that serves as online buffer
27   * to provide latest events
28   */
29  @InterfaceAudience.Private
30  final class RingBufferEnvelope {
31  
32    private NamedQueuePayload namedQueuePayload;
33  
34    /**
35     * Load the Envelope with NamedQueuePayload
36     *
37     * @param namedQueuePayload all details of rpc call that would be useful for ring buffer
38     *   consumers
39     */
40    public void load(NamedQueuePayload namedQueuePayload) {
41      this.namedQueuePayload = namedQueuePayload;
42    }
43  
44    /**
45     * Retrieve current namedQueue payload {@link NamedQueuePayload} available on Envelope and
46     * free up the Envelope
47     *
48     * @return Retrieve rpc log details
49     */
50    public NamedQueuePayload getPayload() {
51      final NamedQueuePayload namedQueuePayload = this.namedQueuePayload;
52      this.namedQueuePayload = null;
53      return namedQueuePayload;
54    }
55  
56  }