/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_METRICSSUMMARIZER_H
#define ANDROID_METRICSSUMMARIZER_H
#include <utils/threads.h>
#include <utils/Errors.h>
#include <utils/KeyedVector.h>
#include <utils/String8.h>
#include <utils/List.h>
#include <media/IMediaAnalyticsService.h>
namespace android {
class MetricsSummarizer
{
public:
MetricsSummarizer(const char *key);
virtual ~MetricsSummarizer();
// show the key
const char * getKey();
// should the record be given to this summarizer
bool isMine(MediaAnalyticsItem &item);
// hand the record to this summarizer
void handleRecord(MediaAnalyticsItem *item);
virtual void mergeRecord(MediaAnalyticsItem &have, MediaAnalyticsItem &incoming);
// dump the summarized records (for dumpsys)
AString dumpSummary(int &slot);
AString dumpSummary(int &slot, const char *only);
void setIgnorables(const char **);
const char **getIgnorables();
protected:
// various comparators
// "do these records have same attributes and values in those attrs"
// ditto, but watch for "error" fields
bool sameAttributes(MediaAnalyticsItem *summ, MediaAnalyticsItem *single, const char **ignoreables);
// attributes + from the same app/userid
bool sameAttributesId(MediaAnalyticsItem *summ, MediaAnalyticsItem *single, const char **ignoreables);
static int PropSorter(const void *a, const void *b);
void sortProps(MediaAnalyticsItem *item);
private:
const char *mKey;
const char **mIgnorables;
List<MediaAnalyticsItem *> *mSummaries;
};
// ----------------------------------------------------------------------------
}; // namespace android
#endif // ANDROID_METRICSSUMMARIZER_H