1 /* 2 * Copyright (C) 2017 The Android Open Source Project 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 #pragma once 17 18 #include <utils/RefBase.h> 19 #include "StatsPuller.h" 20 #include "logd/LogEvent.h" 21 22 namespace android { 23 namespace os { 24 namespace statsd { 25 26 // Determine if pull was needed and if so, whether the pull was successful 27 enum PullResult { PULL_RESULT_SUCCESS = 1, PULL_RESULT_FAIL = 2, PULL_NOT_NEEDED = 3 }; 28 29 class PullDataReceiver : virtual public RefBase{ 30 public: ~PullDataReceiver()31 virtual ~PullDataReceiver() {} 32 /** 33 * @param data The pulled data. 34 * @param pullResult Whether the pull succeeded and was needed. If the pull does not succeed, 35 * the data for the bucket should be invalidated. 36 * @param originalPullTimeNs This is when all the pulls have been initiated (elapsed time). 37 */ 38 virtual void onDataPulled(const std::vector<std::shared_ptr<LogEvent>>& data, 39 PullResult pullResult, int64_t originalPullTimeNs) = 0; 40 41 virtual bool isPullNeeded() const = 0; 42 }; 43 44 } // namespace statsd 45 } // namespace os 46 } // namespace android 47