1 /*
2  * Copyright 2016-17, OpenCensus Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package io.opencensus.stats;
18 
19 import java.util.Set;
20 import javax.annotation.Nullable;
21 
22 /**
23  * Provides facilities to register {@link View}s for collecting stats and retrieving stats data as a
24  * {@link ViewData}.
25  *
26  * @since 0.8
27  */
28 public abstract class ViewManager {
29   /**
30    * Pull model for stats. Registers a {@link View} that will collect data to be accessed via {@link
31    * #getView(View.Name)}.
32    *
33    * @param view the {@code View} to be registered.
34    * @since 0.8
35    */
registerView(View view)36   public abstract void registerView(View view);
37 
38   /**
39    * Returns the current stats data, {@link ViewData}, associated with the given view name.
40    *
41    * <p>Returns {@code null} if the {@code View} is not registered.
42    *
43    * @param view the name of {@code View} for the current stats.
44    * @return {@code ViewData} for the {@code View}, or {@code null} if the {@code View} is not
45    *     registered.
46    * @since 0.8
47    */
48   @Nullable
getView(View.Name view)49   public abstract ViewData getView(View.Name view);
50 
51   /**
52    * Returns all registered views that should be exported.
53    *
54    * <p>This method should be used by any stats exporter that automatically exports data for views
55    * registered with the {@link ViewManager}.
56    *
57    * @return all registered views that should be exported.
58    * @since 0.9
59    */
getAllExportedViews()60   public abstract Set<View> getAllExportedViews();
61 }
62