Merge "sonar critical for Conditional Statement"
[dmaap/messagerouter/msgrtr.git] / src / main / java / com / att / nsa / cambria / backends / Consumer.java
1 /*******************************************************************************
2  *  ============LICENSE_START=======================================================
3  *  org.onap.dmaap
4  *  ================================================================================
5  *  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  *  ================================================================================
7  *  Licensed under the Apache License, Version 2.0 (the "License");
8  *  you may not use this file except in compliance with the License.
9  *  You may obtain a copy of the License at
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  *  ============LICENSE_END=========================================================
18  *
19  *  ECOMP is a trademark and service mark of AT&T Intellectual Property.
20  *  
21  *******************************************************************************/
22 package com.att.nsa.cambria.backends;
23
24 /**
25  * A consumer interface. Consumers pull the next message from a given topic.
26  * @author author
27  */
28 public interface Consumer
29 {       
30         /**
31          * A message interface provide the offset and message
32          * @author author
33          *
34          */
35         public interface Message
36         {       
37                 /**
38                  * returning the offset of that particular message 
39                  * @return long
40                  */
41                 long getOffset ();
42                 /**
43                  * returning the message 
44                  * @return message
45                  */
46                 String getMessage ();
47         }
48
49         /**
50          * Get this consumer's name
51          * @return name
52          */
53         String getName ();
54
55         /**
56          * Get creation time in ms
57          * @return
58          */
59         long getCreateTimeMs ();
60
61         /**
62          * Get last access time in ms
63          * @return
64          */
65         long getLastAccessMs ();
66         
67         /**
68          * Get the next message from this source. This method must not block.
69          * @return the next message, or null if none are waiting
70          */
71         Message nextMessage ();
72
73         /**
74          * Get the next message from this source. This method must not block.
75          * @param atOffset start with the next message at or after atOffset. -1 means next from last request
76          * @return the next message, or null if none are waiting
77          */
78
79
80         /**
81          * Close/clean up this consumer
82          */
83         void close();
84         
85         /**
86          * Commit the offset of the last consumed message
87          * 
88          */
89         void commitOffsets();
90         
91         /**
92          * Get the offset this consumer is currently at
93          * @return offset
94          */
95         long getOffset();
96 }